我正在尝试从 hsqldb 2.4.1 升级到 2.7.4。 我有一份以下形式的变更声明
ALTER TABLE abc ADD Index INT DEFAULT 0 NOT NULL
执行该语句会导致此异常
Caused by: org.hsqldb.HsqlException: unexpected token: Index
at org.hsqldb.error.Error.parseError(Unknown Source)
at org.hsqldb.ParserBase.unexpectedToken(Unknown Source)
at org.hsqldb.ParserBase.checkIsSimpleName(Unknown Source)
at org.hsqldb.ParserDDL.compileAlterTable(Unknown Source)
at org.hsqldb.ParserDDL.compileAlter(Unknown Source)
at org.hsqldb.ParserCommand.compilePart(Unknown Source)
at org.hsqldb.ParserCommand.compileStatements(Unknown Source)
at org.hsqldb.Session.executeDirectStatement(Unknown Source)
at org.hsqldb.Session.execute(Unknown Source)
我尝试设置属性
sql.syntax_mys=true
以及对alter语句的各种更改,但没有成功。
请问有什么指点吗?
此外,除了交换 jar 并解决遇到的每个问题之外,从 2.4.1 升级到 2.7.4 是否还需要遵循任何特殊步骤?
谢谢。
标识符
Index
可能是您使用的任何底层 SQL 风格中的保留关键字。 您可以尝试使用双引号来转义它:
ALTER TABLE abc ADD "Index" INT DEFAULT 0 NOT NULL
但即使上述方法有效,每当您从 Hibernate 代码中引用它时,您可能会被迫永远在引号中转义
Index
。 更好的方法是不要使用 SQL 关键字命名列,例如而是使用:
ALTER TABLE abc ADD IndexCol INT DEFAULT 0 NOT NULL