我正在尝试将我们的数据库从hsqldb1.7升级到最新版本。不幸的是,有人将一列命名为“default”。我似乎无法在sql中重命名此列(这是在1.7中,因为必须在升级之前进行重命名)。
我试过逃出这个纵队:
stmt.executeUpdate("ALTER TABLE table_name ALTER COLUMN \"DEFAULT\" RENAME TO new_name");
各种各样的变化(包括“\”和[]),似乎什么都不起作用,我总是得到下面的结果
java.sql.SQLException: Column not found: DEFAULT in statement [ALTER TABLE table_name ALTER COLUMN "DEFAULT"]
我明显漏掉了什么?
3条答案
按热度按时间mwecs4sa1#
不幸的是,有人将一列命名为“default”
问题似乎出在外壳上。双引号不仅可以“转义”你的名字,还可以区分大小写,不像非引号的名字,在大多数数据库中不区分大小写。因此,在重命名列时必须使用准确的大小写:
... 或使用jdbc:
uujelgoq2#
从hsqldb指南:
如果数据库对象被双引号引用,则所有关键字都可用于数据库对象。
所以试着用这个:
ukxgm1gy3#
试着用倒勾(`)。
这应该很好地转义默认字符串。