GOOGLE ADS

пятница, 15 апреля 2022 г.

Mysql устанавливает значение по умолчанию для столбца типа json

Я слышал, что версия 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нельзя присвоить значение по умолчанию.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...