json_object json_merge json_extract functions mysql json import mysql-json

json_merge - La importación de MySQL 5.7.12 no puede crear un valor JSON a partir de una cadena con CHARACTER SET ''binary''



mysql json_extract (5)

Esto me funcionó (también tuve el control de la exportación al archivo sql). Hay muchas advertencias; por ejemplo, sabía que los campos nunca serían más grandes que 1000 y no contendrían caracteres que no sean ascii. Por favor, haz un comentario y dime todos los por qué esto es tan malo :)

Antes de exportar

alter table <table> modify <json_column> varchar(1000);

Luego, después de la importación

alter table <table> modify <json_column> json;

Exporté mi base de datos con columnas JSON en ella. Después de migrar a un nuevo servidor, mi importación se bloqueaba cada vez con un error como:

no se puede crear un valor JSON a partir de una cadena con CHARACTER SET ''binary''

En stackoverflow, encontré esta publicación pero no funcionó para mí: mysqlimport emite "set @@ character_set_database = binary" lo que impide cargar valores json

El archivo es de 2 GB y no es posible abrir el archivo.

¿Alguien tiene una idea para importar mi archivo de base de datos?


Puede aplicar una expresión regular al texto SQL que exportó, lo que convertirá sus cadenas binarias en un formato insertable. Esta fue mi solución rápida y sucia cuando me enfrenté a este problema

(X''[^,/)]*'') CONVERT($1 using utf8mb4)

La aplicación de este regex significa

INSERT INTO json_table (json_column) VALUES (X''7B22666F6F223A2022626172227D'');

ahora se convertirá

INSERT INTO json_table (json_column) VALUES (CONVERT(X''7B22666F6F223A2022626172227D'' using utf8mb4));


Toda la información del tipo de datos MySQL JSON debe ser un conjunto de caracteres UTF8MB4, no BINARIO.


Tuve este problema relacionado con las exportaciones realizadas por Sequel Pro. Desactive los Output BLOB fields as hex opción Output BLOB fields as hex y el problema desapareció. La inspección visual de la exportación mostró JSON legible en lugar de binario.


cambiar la colación a utf8_general_ci. trabajó para mi.