【问题标题】:Does HSQLDB support default values for enums in MySQL compat mode?HSQLDB 是否支持 MySQL 兼容模式下的枚举默认值?
【发布时间】:2021-01-26 23:23:27
【问题描述】:

我正在使用内存中的 HSQLDB 实例(版本 2.5.1)进行 Java 单元测试。实例启用了 MySQL 兼容模式。以下创建语句有效:

CREATE TABLE people
(
  is_subscribed enum('y','n') NOT NULL
)

但是,如果我尝试添加这样的默认值:

CREATE TABLE people
(
  is_subscribed enum('y','n') DEFAULT 'n' NOT NULL
)

我收到以下错误消息:

java.sql.SQLSyntaxErrorException: unexpected token: DEFAULT : line: 3 in statement [CREATE TABLE people

有没有办法为枚举类型指定默认值?

【问题讨论】:

  • 你试过NOT NULL DEFAULT 'n'吗?也就是说,只需颠倒列选项的顺序即可。 syntax doc 表明 DEFAULT 在 NOT NULL 之前,但它应该是一个快速测试来确认。
  • @BillKarwin 是的,我确实尝试过,但没有成功。正如你所说,文档要求首先放置 DEFAULT,如果顺序颠倒,HSQLDB 似乎会抛出异常。

标签: mysql hsqldb


【解决方案1】:

直到 2.5.1 的 HSQLDB 版本不支持直接用于 MySQL ENUM 声明的 DEFAULT 子句。这可能会在以后的版本中得到支持。

您可以在创建表后添加 DEFAULT。使用:

ALTER TABLE people ALTER COLUMN is_subscribed SET DEFAULT 'n'

更新:现在最新的代码支持这一点。您可以查看代码并构建 jar。更新将出现在下一个版本中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-07
    • 2011-07-22
    • 2013-12-01
    • 2020-06-19
    • 2012-12-03
    • 2011-03-10
    • 1970-01-01
    相关资源
    最近更新 更多