2015-07-06 3 views
0

У меня проблема с HSQLDB, у меня есть база данных MySql, которую я сбрасываю в память HSQLDB. Я получаю следующую ошибку при запуске скрипта: Error: unexpected token: (, который находится на скрипте create table и строка нарушения TINYINT(3) , если я удалю скобки и номер, который он отлично работает, это действительное объявление на MYSQL, и я попытался включить совместимость с MYSQL, изменив свой URL на: jdbc:hsqldb:mem:dataSource;sql.syntax_mys=true, но это все еще не работает. :(Проблема миграции MYSQL для HSQLDB

так же, как дополнительная информация, я использую соединение Spring спящего режима и использование LiquiBase сделать сброс из MySQL в HSQLDB, и я бегу HSQLDB v2.3.2

+0

Перейти к HSQLDB 2.3.3 для более расширенного режима совместимости MySQL. TINYINT (3) является просто подробной формой TINYINT. – fredt

+0

спасибо, обновится и сообщит вам об этом – ThaSaleni

+0

hi @fredt, обновив мою версию HSQLDB, не решает эту проблему, я все равно получаю ту же ошибку, есть ли способ установить HSQLDB для того, чтобы скопировать фигурные скобки после переменной, они нужны? – ThaSaleni

ответ

2

SQL Синтаксис особенно DDL не очень хорошо переносимый между различными базами данных. Вам нужно будет изучить правильный синтаксис для создания таблицы в HSQLDB, который несколько отличается от MySQL.

Вы не можете просто экспортировать определение таблицы из одного аромата базы данных и импортировать в другой. Было бы здорово если бы это было так, но SQL Standard довольно свободно ...

+0

, но у HSQLD предположительно есть режим совместимости для MYSQL, и я включил это, поэтому я ожидал, что это сработает – ThaSaleni

+0

Как было указано @fredt проблема заключается в том, что ваш вкус HSQLDB, скорее всего, не учитывает спецификацию размера при использовании TINYINT. Поэтому удаление всех брекетов после TINYINT поможет. Когда вы работаете с чем-то вроде Liquidbase, вы должны использовать более нейтральный формат, такой как YML для ваших дампов. Это может привести к несовместимости между различными версиями SQL. –

+0

спасибо @ tobias-kremer Я собираюсь обновиться и посмотреть, работает ли это, я также не хочу снимать брекеты вручную, потому что весь этот процесс будет бесполезен для меня, если ему нужно какое-то ручное вмешательство – ThaSaleni

0

Я предполагаю, что у вас есть DDL-скрипт, вы можете добавить SET DATABASE SQL SYNTAX MYS TRUE; в начало, см. Также here (Таблица 13.29. Синтаксис стиля MySQL).

Вы можете использовать это только для тестов; если вы хотите полностью перейти на HSQLDB, изменение самих скриптов - это долгосрочное решение.

+0

sql.syntax_mys = true делает то же самое – ThaSaleni

Смежные вопросы