【问题标题】:Query error in Mysql compatible in-memory database (h2)Mysql兼容的内存数据库中的查询错误(h2)
【发布时间】:2019-08-09 17:26:33
【问题描述】:

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

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 sql database spring-boot h2


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      错误很明显,不能在枚举列中使用空值。用一个值来表示空虚,而不是

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

      使用

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

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

      【讨论】:

      • 此查询在 mysql 5.5 版本中有效,但在 h2 数据库中无效。内存数据库中是否有其他与 mysql 5.5 兼容的数据库?
      • @yathatha我不知道。
      猜你喜欢
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 2016-12-03
      • 2019-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-11
      相关资源
      最近更新 更多