升级到hsqldb 2.7.4时列称为索引问题

问题描述 投票:0回答:1

我正在尝试从 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 是否还需要遵循任何特殊步骤?

谢谢。

hsqldb
1个回答
0
投票

标识符

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
© www.soinside.com 2019 - 2024. All rights reserved.