MySQLでダンプをインポートする際に「cannot creat a JSON value from a string with CHARACTER SET 'binary'」と表示されてインポートができない
TL;DR
文字コードをバイナリモードで出力しちゃった説
ヘッダー部分?を binary
から utf8mb4
などに変更してインポートしなおす
- /*!40101 SET NAMES binary */; + /*!40101 SET NAMES utf8mb4 */;
データに16進表記のバイナリデータが含まれる説
JSON型のダンプなどでテキストデータでなく、16進表記のバイナリが入っちゃうことがあるらしい
-- 中身は適当 INSERT INTO hoge (`id`, `json_column`) VALUES (1, X'573DA6CD8B49C5DD1E02AEA76876754F'), (2, X'134715474B24EC215B49BACE9B82561D');
CONVERT関数で文字列に直せばよい
INSERT INTO hoge (`id`, `json_column`) VALUES (1, CONVERT(X'573DA6CD8B49C5DD1E02AEA76876754F' using utf8mb4)), (2, CONVERT(X'134715474B24EC215B49BACE9B82561D' using utf8mb4));