如何使用 hsqldb 和 SET DATABASE SQL REGULAR NAMES

how to use hsqldb and SET DATABASE SQL REGULAR NAMES

我通常需要模拟一个内存中的生产数据库。生产是 mysql 我正在尝试使用 hsqldb 来模拟它,使用 Spring Boot 来处理替换。一切都很好,包括找到我的 flyway 脚本并 运行ning 它们。我在 flyway 脚本的 运行 期间遇到了这个问题。过去有人决定将 mysql table 之一称为“_show”,而 mysql 似乎对此很满意。 Hsqldb 不开心。我找到了一些声称可以解决此问题的设置的参考资料,但它们似乎没有任何区别。这是我的脚本的样子:

SET DATABASE SQL NAMES FALSE
SET DATABASE SQL REGULAR NAMES FALSE

CREATE TABLE _show (
  id bigint(20) NOT NULL,
...

有了这个,我得到:

org.hsqldb.HsqlException: unexpected token: _SHOW

flyway 尝试执行脚本时。我尝试在 table 名称周围加上双引号,但这次关于左括号出现了不同的错误,我尝试使用反斜杠来引用下划线。没有运气。我想我一定是在以某种方式滥用了 SET DATABASE... 标志,但我找不到任何使用它们的示例,只有表明我这样做是正确的文档。

我正在使用 org.hsqldb:hsqldb:2.5.0

感谢您的帮助

SET 语句在 2.5.0 版中运行良好,并允许创建 _SHOW table。 BIGINT(20) 声明不兼容,对于 HSQLDB 应该是 BIGINT。

您可以使用 HSQLDB 数据库管理器并手动执行 SQL,一次一个语句,在 mem: 数据库中查看导致问题的原因。如果您报告的语句是在一个块中执行的,则在编译 CREATE 之前 SET 命令不会生效。