Liquibase使用Postgis;Geometry&Quot;类型创建表格 [英] Liquibase to create table with Postgis "Geometry" type

查看:0
本文介绍了Liquibase使用Postgis;Geometry&Quot;类型创建表格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在编写一个lisibase脚本来创建一个具有Geometry列的表(来自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

我还提到了liphbase-space扩展https://github.com/lonnyj/liquibase-spatial,并编写了等价的配置:

  - 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...应用液化基础- 应用Liqubase尝试5时出错:更改集迁移失败 Classpath:db/changelog/db.changelog-master.yaml::5-change-set-places::LongLe: 原因:iquibase.Exception.DatabaseException:Error:Type&Quot;Geomy&Quot;不存在位置:67[FAILED SQL:CREATE TABLE 测试方案.位置(id BIGINT非空,geom 几何图形(几何图形,4326)非空,约束位置_pkey 主键(Id))]

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

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

那么它工作得很好。

我肯定漏掉了一些非常简单的东西,但我毫无头绪地检查了一下。谁有更好的主意?

推荐答案

确保您已运行

CREATE EXTENSION postgis;
然后,模式限定数据类型。如果扩展是在public中创建的,请使用

CREATE TABLE places (geom public.geometry, ...);

这篇关于Liquibase使用Postgis;Geometry&Quot;类型创建表格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆