#mysql #hsqldb
#mysql #hsqldb
Вопрос:
Я использую экземпляр HSQLDB в памяти (версия 2.5.1) для модульных тестов Java. В экземпляре включен режим совместимости с MySQL. Работает следующий оператор create:
CREATE TABLE people
(
is_subscribed enum('y','n') NOT NULL
)
Однако, если я попытаюсь добавить значение по умолчанию, подобное этому:
CREATE TABLE people
(
is_subscribed enum('y','n') DEFAULT 'n' NOT NULL
)
Я получаю следующее сообщение об ошибке:
java.sql.SQLSyntaxErrorException: unexpected token: DEFAULT : line: 3 in statement [CREATE TABLE people
Есть ли способ указать значение по умолчанию для типа перечисления?
Комментарии:
1. Вы пробовали
NOT NULL DEFAULT 'n'
? То есть просто измените порядок параметров столбца в обратном порядке. Документ синтаксиса показывает, что значение по УМОЛЧАНИЮ предшествует NOT NULL, но это должен быть быстрый тест, чтобы подтвердить это.2. @BillKarwin Да, я пытался, но это не сработало. Как вы сказали, документы требуют, чтобы значение по УМОЛЧАНИЮ было установлено первым, и HSQLDB, похоже, выдает исключение, если порядок отменен.
Ответ №1:
Версии HSQLDB до 2.5.1 не поддерживают предложение DEFAULT напрямую для объявлений перечислений MySQL. Это может поддерживаться в более поздних версиях.
Вы можете добавить значение по УМОЛЧАНИЮ после создания таблицы. Использовать:
ALTER TABLE people ALTER COLUMN is_subscribed SET DEFAULT 'n'
Обновление: теперь это поддерживается в последнем коде. Вы можете проверить код и создать jar. Обновление появится в следующем выпуске.