Ошибка запроса в Mysql-совместимой базе данных в памяти (h2) - PullRequest
0 голосов
/ 19 марта 2019

Я пытался выполнить какой-то интеграционный тест в моем весеннем загрузочном приложении. Выяснил, что база данных в памяти - это то, что соответствует нашим потребностям. Решили перейти на базу данных 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:

Я использую h2 в режиме mysql с подключением как: -

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

Есть ли что-то, что я могу сделать относительно того же? Если моим источником данных является mysql, есть ли какая-либо другая хорошая совместимая с mysql база данных в памяти. Я слышал о mariaDB4j: mariaDB4j.

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

Это может быть ошибкой, правило против пустых значений нарушает режим совместимости mysql, который запрашивается в строке подключения. Конечно, для H2-режима это может иметь смысл, но здесь это не тот случай использования.

0 голосов
/ 19 марта 2019

Ошибка довольно очевидна, вы не можете использовать пустое значение в столбце enum. Используйте значение для обозначения пустоты вместо

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

использование

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

или

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