SQL Dumpからインポートしようとしたら、Cannot create a JSON value... というエラーが出たので対応した
SQL Dumpからインポートしようとしたら、Cannot create a JSON value… というエラーが出てしまいました。
テーブルにJSONカラムを追加してから発生するようになったようなので、しばらく気づかず...厄介ですね。。
発生したエラー
Error
Cannot create a JSON value from a string with CHARACTER SET 'binary'.
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ファイルを書き出すために指定していたものでした。
もっと最適な方法などあればコメント欄にて教えていただけますと幸いです。
Author And Source
この問題について(SQL Dumpからインポートしようとしたら、Cannot create a JSON value... というエラーが出たので対応した), 我々は、より多くの情報をここで見つけました https://qiita.com/kenkubomi/items/6233dfb111edfbe3b046著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .