Миграция весенней загрузки с 1.5.x на 2.x, версия базы данных H2 1.4.200, вызывающая синтаксическую ошибку в команде alter

Я обновил версию весенней загрузки с 1.5.x до 2.0.0 и обновил версию h2 DB до 1.4.200. В процессе h2 выдает ошибку с моей командой изменить столбец.

Фактическая команда изменения --ALTER TABLE --CHANGE COLUMN VARCHAR(255) NOT NULL,--CHANGE COLUMN TEXT NOT NULL,--CHANGE COLUMN TEXT NOT NULL;

Измененная команда alter (ссылка: https://www.h2database.com/html/commands.html#alter_table_alter_column) ALTER TABLE ALTER COLUMN SET NOT NULL,ALTER COLUMN SET NOT NULL,ALTER COLUMN SET NOT NULL;

Тем не менее я сталкиваюсь с проблемами синтаксиса с приведенными выше командами.

Не удалось выполнить миграцию V1_2__REFINE_FIELD_CHANGE_FIELDS.sql.

Состояние SQL: 42000 Код ошибки: 42000 Сообщение: Синтаксическая ошибка в операторе SQL "ALTER TABLE ALTER COLUMN SET NOT NULL,[*]ALTER COLUMN SET NOT NULL,ALTER COLUMN SET NOT NULL"; Оператор SQL:ALTER TABLE ALTER COLUMN SET NOT NULL,ALTER COLUMN SET NOT NULL,ALTER COLUMN SET NOT NULL [42000-200]. . . Строка: 6 Заявление:ALTER TABLElog_activityALTER COLUMN SET NOT NULL,ALTER COLUMNaddressУСТАНОВИТЬ НЕ NULL, ИЗМЕНИТЬ СТОЛБЦstatusУСТАНОВИТЬ НЕ НУЛЕВОЕ

Я мог видеть, что [*] добавляется после ALTER COLUMNnameSET NOT NULL, я застрял с этой проблемой уже два дня.

Не могли бы вы сказать мне, где я ошибаюсь.

1 ответ

Ни стандартные, ни стандартные нельзя использовать для одновременного изменения нескольких столбцов в H2, вам нужно написать три отдельные команды, например, с помощьюALTER COLUMN:

      ALTER TABLE log_activity ALTER COLUMN name SET NOT NULL;
ALTER TABLE log_activity ALTER COLUMN address SET NOT NULL;
ALTER TABLE log_activity ALTER COLUMN status SET NOT NULL;

В SQL Standard также нет многостолбцовых операций DDL, только некоторые СУБД поддерживают их с различным синтаксисом, зависящим от поставщика.

Обратите внимание, что 1.4.200 — это старая неподдерживаемая версия базы данных H2.ALTER TABLE … CHANGE COLUMNпринимается более новыми версиями H2 только в режимах совместимости с MySQL и MariaDB, если вы хотите использоватьCHANGE COLUMNв H2 2.*.* вам необходимо сначала включить один из этих режимов:https://h2database.com/html/features.html#compatibility

Другие вопросы по тегам