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, ...);
相关文章