当前位置: 首页 > 知识库问答 >
问题:

Liquibase用Postgis“几何图形”类型创建表格

徐飞龙
2023-03-14

我正在编写一个liquibase脚本,以创建一个带有geometrio列的表(来自PostGreSQL DB的PostGis扩展)

  - changeSet:
      id: 5-change-set-places
      comment: Create places table
      author: LongLe
      validCheckSum: 1:any
      changes:
        - sql:
            dbms: postgresql
            endDelimiter: ;
            splitStatements: true
            sql: |
              CREATE TABLE IF NOT EXISTS "${schema}"."places" (
                "id" bigint NOT NULL,
                "geom" GEOMETRY(Geometry, 4326) NOT NULL
              );
              GRANT SELECT, INSERT, UPDATE, DELETE ON "${schema}"."places" TO "${rolename}";
              ALTER TABLE "${schema}"."places"
                DROP CONSTRAINT IF EXISTS "places_pkey",
                ADD CONSTRAINT "places_pkey" PRIMARY KEY ("id");
ERROR: type "geometry" does not exist
  - changeSet:
      id: 5-change-set-places
      comment: Create places table
      author: LongLe
      validCheckSum: 1:any
      changes:
        - createTable:
            columns:
              - column:
                  constraints:
                    nullable: false
                    primaryKey: true
                    primaryKeyName: places_pkey
                  name: id
                  type: bigint
              - column:
                  constraints:
                    nullable: false
                  name: geom
                  type: GEOMETRY(Geometry,4326)
            tableName: test

31-03-2021 21:07:31.587[main]警告C.M.MS.Block...applyLiquiBase-应用liquibase尝试5:更改集类路径:db/changelog/db.changelog-master.yaml::5-change-set-places::longle:reason:liquibase.exception.databaseException:错误:类型“几何”不存在位置:67[失败的SQL:CREATE TABLE testschema.places(id BIGINT not NULL,geom geometry(geometry,4326)not NULL,CONSTRAINT

但是当我从日志中取出SQL运行时:

CREATE TABLE testschema.places (id BIGINT NOT NULL, geom geometry(Geometry, 4326) NOT NULL, CONSTRAINT places_pkey PRIMARY KEY (id))

那它就很好用了。

我一定错过了一些非常简单的事情,但我检查了一遍又一遍,没有任何线索。有人有更好的主意吗?

共有1个答案

陆昂然
2023-03-14

确保你已经跑了

CREATE EXTENSION postgis;

然后架构限定数据类型。如果扩展是在public中创建的,请使用

CREATE TABLE places (geom public.geometry, ...);
 类似资料:
  • 我是PostgreSQL和PostGIS的新手,但这个问题并不简单。我使用PostgreSQL 9.5和PostGIS 2.2。 我需要运行一些需要大量时间的查询。 首先,让我用非GIS术语来解释这个问题: 基本上,我有一组数十万个点,分布在大约五十万平方公里的领土上(国家)。在这个领土上,我有大约十几组来自各种数据库的区域。在每组中,我都有几百到几千个区域。我想找出这些领域中的哪些点。 现在,我

  • 本文向大家介绍用Javascript创建图形,包括了用Javascript创建图形的使用技巧和注意事项,需要的朋友参考一下 我们将创建一个支持权重以及有向和无向类型的图类。这将使用邻接表来实现。随着我们转向更高级的概念,图形的权重和有向性质都将派上用场。 邻接列表是单独列表的数组A。数组Ai的每个元素都是一个列表,其中包含与顶点i相邻的所有顶点。我们使用2个成员,节点和边来定义它。 让我们通过定义

  • 问题内容: 因此,首先,我的代码基于该线程中可接受的答案。 我正在尝试从数据库创建一个表视图,并且该表视图应根据用户要求的数据动态填充。到目前为止,尽管工作正常,但我的问题是,从数据库收集的所有值都在Java中解释为字符串,但是我需要它们的实际值。 这样做的原因是javafx tableview的内置排序机制将所有数字排序为字符串,因为填充表时它们的类型会转换为字符串。 示例:值921、200、1

  • 我正在尝试使用postgis设置一个带有hibernate空间的项目。按照hibernate空间4.0-M1的教程,我首先遇到了无法找到依赖postgis-jdbc-1.5.3.jar的问题。就像有人在这里建议的那样,我使用了1.5.2版和教程编译。 但是如果我尝试运行它,我会出错。我将Hibernate的调试级别设置为调试und时偶然发现了以下问题: 错误是德语,但意味着“几何”类型不存在。 如

  • POSTGIS=“2.5.4” [扩展] PGSQL=“120” GEOS=“3.8.1-CAPI-1.13.3” PROJ=“Rel. 6.3.2, May 1st, 2020” GDAL=“GDAL 3.0.4, 2020/01/28 发布” LIBXML=“2.9.7” LIBJSON=“0.13.1” LIBPROTOBUF=“1.3.0” RASTER Java Postgis Depe

  • 用Pixi绘制几何图形 使用图片纹理是制作精灵最有效的方式之一,但是Pixi也提供了自己低级的绘画工具。你可以使用它们来创造矩形、线段、复杂的多边形以及文本。并且它使用和Canvas Drawing API几乎一致的api,所以如果你熟悉canvas的话,那么几乎没有什么新东西需要学习。当然另一个巨大的优势在于,不同于Canvas的绘画api,你使用Pixi绘制的图形是通过WebGL在GPU上渲染