Я слышал, что версия mysql до 8.0.13 принимает значение по умолчанию для столбца типа json, поэтому я использую cmd:
ALTER TABLE templates CHANGE COLUMN values JSON NOT NULL DEFAULT '{}';
но получаю ошибку:
Error Code: 1101. BLOB, TEXT, GEOMETRY or JSON column 'values' can't have a default value
Итак, как мне это исправить?
Я использую mysql версии 8.0.19 и клиентский инструмент Workbench.
Решение проблемы
Начиная с версии 8.0.13 в документации говорится (выделено мной):
Типам данныхBLOB, TEXT, GEOMETRYи можно присвоить значение по умолчанию, только если значение записано как выражение, даже если значение выражения является литералом.JSON
Вы можете сделать выражение по умолчанию выражением, заключив буквальное значение в круглые скобки:
ALTER TABLE templates CHANGE COLUMN values JSON NOT NULL DEFAULT ('{}');
Или:
ALTER TABLE templates CHANGE COLUMN values JSON NOT NULL DEFAULT (JSON_OBJECT());
До версии 8.0.13 MySQL было невозможно установить значение по умолчанию для столбца JSON, как указано в документации 8.0 несколькими абзацами позже:
Типам данных BLOB, TEXT, GEOMETRYи JSONнельзя присвоить значение по умолчанию.
Комментариев нет:
Отправить комментарий