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でもライブラリでもバージョンごとにできる、できないがあるのでバージョンは正確にみていきたいところです。

シェア!

この記事を書いた人

kenichiのアバター kenichi エンジニア・写真家 | Engineer and photographer

日本全国と海外を旅するノマドワーカー。5年間、技術営業として働いたのち独立。
フリーランスエンジニアとしてWebサイト制作やアプリケーション開発を行う。面白い人たちの面白いを世に届けるべく行動中。
2024年11月にポルトガルへ移住🇵🇹

目次