MySQLのエラーを確認する [[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の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 BLOBTEXTGEOMETRY, and JSON data types cannot be assigned a default value.]と、JSON型はデフォルト値は設定できませんと記載がある。

よくやりがちなのが、つい最新バージョンを参照してしまい、できると勘違いすることがある。気をつけたい。

Summay

MySQLでもライブラリでもバージョンごとにできる、できないがあるのでバージョンは正確にみていきたいところです。

よかったらシェアしてね!
目次