MySQL 5.7.12 import cannot create a JSON value from a string with CHARACTER SET 'binary'
You can apply a regex to the SQL text which you exported which will convert your binary strings into an insertable format. This was my quick and dirty fix when I faced this issue
(X'[^,\)]*')
CONVERT($1 using utf8mb4)
Applying this regex means
INSERT INTO json_table (json_column) VALUES (X'7B22666F6F223A2022626172227D');
will now become
INSERT INTO json_table (json_column) VALUES (CONVERT(X'7B22666F6F223A2022626172227D' using utf8mb4));
I had this problem dealing with exports made by Sequel Pro. I unchecked the Output BLOB fields as hex
option and the problem went away. Visually inspecting the export showed legible JSON instead of binary.
I faced the same issue today. Below were the findings for my case,
I asked one of my friend to generate an SQL dump for me to import. He used sequel-pro
to generate the dump (export database). When I did the import it threw an error Cannot create a JSON value from a string with CHARACTER SET 'binary'
So, there was an issue with the generated dump, all the json
fields were converted to some raw format i.e. instead of value being
"{'key1':'value1', 'key2':'value2'}"
it was,
X'nfdsklsdsklnfjkbvkjsdbvkjhdfsbvkjdsbnvljkdsbvkjhdfbvkjdfbvjkdfb'
So, when importing the dump i.e. running the insert
statements mysql
could not process the data as it was not of json
type.
Here is a link to the bug reported
https://github.com/sequelpro/sequelpro/issues/2397
You need to uncheck the Output BLOB fields as hex
option.