Mysql兼容的内存数据库中的查询错误(h2)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql兼容的内存数据库中的查询错误(h2)相关的知识,希望对你有一定的参考价值。

我试图在我的spring启动应用程序上执行一些集成测试。已经确定内存数据库符合我们的需求。决定使用h2数据库。目前我们正在使用mysql 5.5版本。我从mysql转储创建查询。示例查询: -

CREATE TABLE `TEST` (
  `id` varchar(20) NOT NULL,
  `test` enum('','of') NOT NULL,
   PRIMARY KEY (`id`)
);

我在pom.xml中使用以下依赖项: -

<dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.4.199</version>
        <scope>test</scope>
</dependency>

如果我在h2上执行此查询,则会出现以下错误: -

Empty enums are not allowed; SQL statement:

我在mysql模式下使用h2连接为: -

jdbc:h2:file:~/test;MODE=MYSQL

对于同样的事情我能做些什么吗?如果我的数据源是mysql,那么还有其他好的mysql兼容的内存数据库。我听说过mariaDB4j:mariaDB4j。

答案

这可能是一个错误,针对空值的规则似乎打破了连接字符串中请求的mysql兼容模式。当然,对于H2本机模式,它可以有意义,但这不是这里的用例。

另一答案

错误非常明显,您不能在枚举列中使用空值。而是使用值来表示空虚

[...]
`test` enum('','of') NOT NULL,
[...]

使用

[...]
`test` enum('--','of') NOT NULL,
[...]

要么

[...]
`test` enum(' ','of') NOT NULL,
[...]

以上是关于Mysql兼容的内存数据库中的查询错误(h2)的主要内容,如果未能解决你的问题,请参考以下文章

播放框架2:内存数据库中的h2 mysql兼容模式:转义字符

Spring boot jpa H2兼容模式MYSQL不起作用

postgresql 兼容性中的语法错误 h2 数据库

H2 和 Oracle 兼容性问题

H2 在 MySQL 模式下,内存 DB 对 ORDER BY 的处理方式不同

使用MYSQL时,Grails条件查询失败,语法错误