Миграция весенней загрузки с 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_activity
ALTER COLUMN SET NOT NULL,ALTER COLUMNaddress
УСТАНОВИТЬ НЕ NULL, ИЗМЕНИТЬ СТОЛБЦstatus
УСТАНОВИТЬ НЕ НУЛЕВОЕ
Я мог видеть, что [*] добавляется после ALTER COLUMNname
SET 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