Миграция с MySql на Hsqldb с engine = InnoDb в sql - PullRequest
1 голос
/ 21 октября 2019

Я создаю весенний профиль для динамических сред в gitlab и не хочу создавать отдельную базу данных mysql для каждого экземпляра, поэтому я пытаюсь использовать существующие миграции жидкости с базой данных hsqldb в этом специфическом профиле, который, кажется,работать помимо части engine = InnoDb в sql.
Я уже добавил sql.syntax_mys=true в URL источника данных, который поддерживает типы данных, а не часть двигателя, хотя.

Поскольку я хочу избежать написания различных миграций sql для динамических сред и уже имею экземпляр prod, изменяющий миграцию или добавляющий отдельные миграции, на самом деле не вариант для меня.

Есть ли способсказать hsql просто игнорировать эту часть или определить ее как некую функцию, которая ничего не делает?

Примером sql будет:

create table if not exists xy(
    field1             varchar(255) not null,
    field2  ....
) engine=InnoDB;

Ответы [ 2 ]

1 голос
/ 26 октября 2019

MySQL поддерживает комментарии, в том числе специальный формат для условного исполнения: https://dev.mysql.com/doc/refman/8.0/en/comments.html

Если вы добавите номер версии после символа !, синтаксис в комментарии выполняется только в том случае, еслиВерсия MySQL больше или равна указанному номеру версии. Ключевое слово KEY_BLOCK_SIZE в следующем комментарии выполняется только серверами с MySQL 5.1.10 или выше:

CREATE TABLE t1(a INT, KEY (a)) /*!50110 KEY_BLOCK_SIZE=1024 */;

HSQLDB также поддерживает синтаксис комментариев в операторах SQL: http://www.hsqldb.org/doc/1.8/guide/ch09.html#N124ED

Все эти типы комментариев игнорируются базой данных.

Исходя из этого, вы можете поместить ENGINE=InnoDB в комментарий, чтобы HSQLDB его игнорировал, но MySQL его запустит:

create table if not exists xy(
    field1             varchar(255) not null,
    field2  ....
) /*!10000 engine=InnoDB; */
1 голос
/ 21 октября 2019

Функция автоматической зачистки будет добавлена ​​в HSQLDB в следующей версии.

Тем временем вы можете изменить исходный код JDBCStatement для проверки и удаления строки при ее отправке.

Обновление: баночка снимков с этой функцией теперь доступна на http://hsqldb.org/download

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...