SQL Dumpからインポートしようとしたら、Cannot create a JSON value... というエラーが出たので対応した
SQL Dumpからインポートしようとしたら、Cannot create a JSON value… というエラーが出てしまいました。
テーブルにJSONカラムを追加してから発生するようになったようなので、しばらく気づかず…厄介ですね。。
発生したエラー
Cannot create a JSON value from a string with CHARACTER SET 'binary'.
私は、TablePlusというGUIクライアントを使用していたため、以下のような画面とともにメッセージが表示されました。
もし、他のGUIクライアントやコマンドにて実行された場合でも、同じようなエラーが出るかもしれません。
SQL Dumpに使用したコマンド
参考までに、SQL Dumpを行った際に実行していたコマンドも載せておきます。<HOST>
、<USER>
、<PASSWORD>
、<DATABASE>
には、それぞれ適切な値を設定してあります。
mysqldump --host=<HOST> --user=<USER> --password=<PASSWORD> --single-transaction <DATABASE> --default-character-set=binary > <DATABASE>.sql
解決策
上記に記載した方法で取得したDumpファイルだと、文字コードの設定がbinary
となっていることが原因のようです。
こちらを、無理やり?テキストエディタ等でutf8mb4
に変更してやると、上手くいきました。
- /*!40101 SET NAMES binary */;
+ /*!40101 SET NAMES utf8mb4 */;
※ 恐らくファイルの先頭あたり(私の場合は10行目)に、一箇所のみあるようです。
まとめ
コマンドに付与したオプション(–default-character-set=binary)は、
SQL Dumpを作成する際に、絵文字を含めた状態でDumpファイルを書き出すために指定していたものでした。