MySQLのALTER TABLEのJSON型でデフォルト値を設定した時にエラーが発生した。
[42000][1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(JSON_OBJECT())...
やりたかったことは既存テーブルに列の追加をすることだが、デフォルト値を設定するとエラーになった。
結論、MySQL 8.0.13 より前のバージョンはJSON型にデフォルト値は設定できません。
調べた過程を書いていきます。
目次
MySQLのバージョン確認
コマンドを実行し、MySQLのバージョンを確認した。
すると、5.7.30であることがわかった。
select version();
MySQLのバージョンに対応したドキュメントを確認
公式ドキュメントを参照してみる。
「Explicit Default Handling」の箇所を見ると、[The BLOB
, TEXT
, GEOMETRY
, and JSON
data types cannot be assigned a default value.]と、JSON型はデフォルト値は設定できませんと記載がある。
よくやりがちなのが、つい最新バージョンを参照してしまい、できると勘違いすることがある。気をつけたい。
Summay
MySQLでもライブラリでもバージョンごとにできる、できないがあるのでバージョンは正確にみていきたいところです。