【问题标题】:How to tell HSQLDB to allow identity definition for SERIAL?如何告诉 HSQLDB 允许为 SERIAL 定义身份?
【发布时间】:2017-12-06 17:25:59
【问题描述】:

我目前正在为使用 postgreSQL 数据库的 Spring Boot 应用程序编写测试。在测试期间,我想用一些内存变体(如 H2 或 HSQLDB)替换数据库。遗憾的是,两者的行为都与 postgreSQL 数据库不同。

我的迁移看起来像

CREATE TABLE foo(id BIGSERIAL PRIMARY KEY, ...)

这导致 hsqldb 告诉我

SQL State  : 42525
Error Code : -5525
Message    : identity definition not allowed: FOO_ID

显然,为主键创建匹配序列是被禁止的。有没有办法告诉 hsqldb 接受这个?

【问题讨论】:

    标签: hsqldb


    【解决方案1】:

    您需要在 HSQLDB 中设置 PostgreSQL 兼容模式。

    SET DATABASE SQL SYNTAX PGS TRUE
    

    然后您的表定义被接受并在内部转换为等效的 SQL 标准。

    CREATE TABLE FOO(ID BIGINT GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY, ..
    

    【讨论】:

    • 我当然是在连接字符串中设置pg模式。
    • 我检查了我使用 HSQLDB 2.4.0 版给出的示例,它可以工作。
    猜你喜欢
    • 2012-06-25
    • 1970-01-01
    • 2021-09-11
    • 2023-03-21
    • 2012-12-18
    • 2020-08-04
    • 1970-01-01
    • 1970-01-01
    • 2013-03-25
    相关资源
    最近更新 更多