gpt4 book ai didi

postgresql - 无法使用 text[] 数据类型创建表

转载 作者:行者123 更新时间:2023-11-29 11:46:26 24 4
gpt4 key购买 nike

我试图在我的 postgresql 数据库中存储一个实体。这个实体里面有一个列表,所以我想使用 postgresql 类型 TEXT[]。但是每次我尝试时都会遇到 SQL 错误,我不知道为什么。

我没有收到语法错误,真的。我确定这是一个愚蠢的问题,但你能帮我吗?

谢谢

我尝试了一些替代方法,直接从 h2 控制台创建它,但我总是得到同样的错误

我使用 flyway 创建表的脚本


CREATE TABLE discrimination(
id SERIAL PRIMARY KEY NOT NULL ,
location VARCHAR(255) NOT NULL,
criteria TEXT[] NOT NULL,
domain VARCHAR(255) NOT NULL,
description TEXT NOT NULL,
name_organ VARCHAR(55) NOT NULL,
function_disc VARCHAR(55) NOT NULL
);

我的 h2 和 flyway 应用程序配置



h2:
console:
enabled: true
path: /h2
datasource:
url: jdbc:h2:mem:formation-iris;MODE=PostgreSQL
username: test
password: test
driver-class-name: org.h2.Driver
flyway:
locations: classpath:db/migration
enabled: true

我得到的错误

Syntax error in SQL statement "CREATE TABLE DISCRIMINATION( 
ID SERIAL PRIMARY KEY NOT NULL ,
LOCATION VARCHAR(255) NOT NULL,
CRITERIA TEXT[[*]] NOT NULL,
DOMAIN VARCHAR(255) NOT NULL,
DESCRIPTION TEXT NOT NULL,
NAME_ORGAN VARCHAR(55) NOT NULL,
FUNCTION_DISC VARCHAR(55) NOT NULL
) "; expected "(, FOR, UNSIGNED, INVISIBLE, VISIBLE, NOT, NULL, AS, DEFAULT, GENERATED, ON, NOT, NULL, AUTO_INCREMENT, BIGSERIAL, SERIAL, IDENTITY, NULL_TO_DEFAULT, SEQUENCE, SELECTIVITY, COMMENT, CONSTRAINT, PRIMARY, UNIQUE, NOT, NULL, CHECK, REFERENCES, ,, )"; SQL statement:

最佳答案

来自 H2 文档:

Compatibility Modes

For certain features, this database can emulate the behavior of specific databases. However, only a small subset of the differences between databases are implemented in this way.

这意味着 H2 可以模拟某些特定于数据库的行为,但它不会与选定的数据库完全兼容。SQL 语法尤其如此。所以,如果你想在 H2 中使用数组,那么你应该使用 H2 语法 ARRAY 而不是 TEXT[]

这也意味着您将需要一个单独的 SQL 脚本用于生产 (PostgreSQL) 和测试 (H2)。幸运的是,flyway 支持这一点。它可以从不同的文件夹加载特定于供应商的脚本。以这种方式扩展飞路配置:

spring.flyway.locations=classpath:db/migration/{vendor}

并分别在/h2/postgresql文件夹下添加供应商特定的SQL脚本。

关于postgresql - 无法使用 text[] 数据类型创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56593664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com