MySQL 5.7.12 importieren Sie können nicht erstellen Sie eine JSON-Wert aus einem string mit CHARACTER SET 'binäre'
Ich exportiert, meine Datenbank mit JSON Spalten in es. Nachdem ich zu einem neuen server migriert, mein import ist abgestürzt, jedes mal mit einer Fehlermeldung wie:
kann nicht erstellen Sie eine JSON-Wert aus einem string mit CHARACTER SET 'binary'
Auf stackoverflow fand ich diesen Beitrag, aber hat bei mir nicht funktioniert:
mysqlimport-Probleme "set @@character_set_database=binary", die verhindert, dass das laden der json-Werte
Die Datei ist 2 GB, und ist es nicht möglich, die Datei zu öffnen.
Jemand eine Idee hat, der import meiner Datenbank-Datei?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die regex, um den SQL-text, die Sie exportiert haben, das wird konvertieren Sie Ihre Binär-strings in einen einsetzbaren format. Dies war mein quick-and-dirty fix, wenn ich vor diesem Problem
Anwendung dieser regex bedeutet
nun
sed
version:sed -E "s/(X'[^,\)]*')/CONVERT(\1 using utf8mb4)/g" infile.sql > outfile.sql
sed -E "s/(0x'[^,\)]*')/CONVERT(\1 using utf8mb4)/g" infile.sql > outfile.sql
sed -E "s/(0x'[^,\)]*')/CONVERT(\1 using utf8mb4)/g" infile.sql > outfile.sql
Ich hatte dieses problem im Umgang mit den Export von Sequel Pro. Ich deaktiviert die
Output BLOB fields as hex
option und das problem ging Weg. Visuell Inspektion der export zeigte lesbare JSON statt binäre.\"
, aber das sollte\\"
. Also im Grunde: wenn Sie Zitate in Ihre JSON-Daten, Sie haben Pech mit Sequel Pro.Ich Stand vor dem gleichen Problem heute. Unten wurden die Ergebnisse für meinen Fall,
Fragte ich einen von meinem Freund zum generieren eines SQL-dump für mich zu importieren. Er verwendet
sequel-pro
zu generieren dump (Datenbank exportieren). Wenn ich die import-er warf einen FehlerCannot create a JSON value from a string with CHARACTER SET 'binary'
So, es gab ein Problem mit den generierten dump, alle
json
Felder umgewandelt wurden, um einige raw-format, d.h. statt der Wert, der als"{'key1':'value1', 'key2':'value2'}"
es war,
X'nfdsklsdsklnfjkbvkjsdbvkjhdfsbvkjdsbnvljkdsbvkjhdfbvkjdfbvjkdfb'
Also, beim Import von der dump-z.B. laufen die
insert
Aussagenmysql
könnte nicht die Daten, denn es war nicht derjson
geben.Hier ist ein link zu der bug berichtet
https://github.com/sequelpro/sequelpro/issues/2397
Sie müssen deaktivieren Sie die
Output BLOB fields as hex
option.Dieser arbeitete für mich, (ich hatte die Kontrolle über den export in die sql-Datei). Es gibt viele Vorbehalte, z.B. wusste ich, dass die Felder nie größer als 1000 und nicht enthalten alle nicht-ascii-chars.
Bitte Kommentar und sagen Sie mir, all die warums, das ist so schlecht tho 🙂
Vor dem export
Dann nach dem import
Ich hatte dieses problem mit einem dump. ich war in der Lage, es zu beheben, indem Sie die Zeile in den dump-Datei aus:
zu
Für diejenigen, die sich mit Sequel Pro um. Juni 2019, zusätzlich zum deaktivieren der "Output BLOB-Felder als hex-option" (wie oben erwähnt) - Sie braucht es auch die nightly-build, die Unterstützung für JSON-Typen vor 2 Jahren. Diese Unterstützung ist noch nicht gemacht es zu der offiziellen Veröffentlichung.
vim version Für Lorcan O 'Neill' s Antwort
ändern Sortierung utf8_general_ci. arbeitete für mich.
Für diejenigen wie mich arived hier mit Symfony 4 /Lehre : Für einige Gründe, die die gleiche Entität aufgelöst werden kann in einem longtext MySQL geben Sie das speichern von JSON, oder eine json-MySQL geben Sie das speichern von json. Die manuelle Einstellung longtext MySQL-Typ gelöst, das problem in meinem speziellen Fall.
Dieses seltsame Problem aufgetreten ist beim ausführen eine einfache UPDATE-Abfrage:
Neustart von MySQL behoben. War nicht in der Lage zu lokalisieren die Ursache.
Edit: Wir sind mit Aurora. Es sieht aus wie es war mit uns eine seltsame Konfiguration, bei der gleichen Instanz behandelt werden sowohl master & slave - /reader-verbindungen.
Alle MySQL JSON-Daten geben Informationen müssen UTF8MB4-Zeichensatz nicht BINÄRE.
ALTER TABLE table_name CHANGE col_name col_name JSON CHARACTER SET utf8mb4;