Mysql 如何使用hsqldb和设置数据库SQL常规名称

Mysql 如何使用hsqldb和设置数据库SQL常规名称,mysql,spring-boot,hsqldb,Mysql,Spring Boot,Hsqldb,我通常需要用内存中的数据库模拟生产数据库。生产是mysql,我试图使用hsqldb来模拟它,使用Spring Boot来处理替换。所有这些都很有效,包括找到我的flyway脚本并运行它们。我遇到的问题是在运行flyway脚本时出现的。过去有人决定将其中一个mysql表称为“\u show”,而mysql似乎对此很满意Hsqldb不高兴。我找到了一些声称可以解决这个问题的设置的引用,但它们似乎没有任何区别。这就是我的脚本的样子: SET DATABASE SQL NAMES FALSE SET D

我通常需要用内存中的数据库模拟生产数据库。生产是mysql,我试图使用hsqldb来模拟它,使用Spring Boot来处理替换。所有这些都很有效,包括找到我的flyway脚本并运行它们。我遇到的问题是在运行flyway脚本时出现的。过去有人决定将其中一个mysql表称为“\u 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尝试执行脚本时。我试着在表名周围加上双引号,但这次在开放括号上出现了一个不同的错误,我试着用反斜杠来引用下栏。不走运。我想我一定是误用了SET数据库。。。不知怎的,我找不到任何使用它们的例子,只是一些文件表明我做得对

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


感谢您的帮助

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


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

您是否尝试**创建表“\u SHOW”***@nbk是的,没有帮助。您是对的,它确实在抱怨bigint(20)而不是_SHOW.BTW,为了与MySQL(包括bigint(20))的一般兼容性,请使用“SET DATABASE SQL SYNTAX MYS TRUE”,这非常有用