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

时间:2019-03-19 08:44:44

标签: mysql sql database spring-boot h2

我试图在我的spring boot应用程序上执行一些集成测试。发现内存数据库很适合我们的需求。决定使用h2数据库。目前我们正在使用mysql 5.5版本。我从mysql中转储了create查询。示例查询:-

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。

2 个答案:

答案 0 :(得分:0)

这可能是一个错误,针对空值的规则似乎破坏了连接字符串中要求的mysql兼容模式。当然,对于H2纯模式它是有道理的,但这不是用例。

答案 1 :(得分:-1)

错误非常清楚,您不能在枚举列中使用空值。使用一个值表示空,而不是

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

使用

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

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