Ich versuche, eine MySQL-Spalte von Varchar (9000) NULL in den neuen JSON-Datentyp in MySQL 5.7 zu ändern. Die Spalte enthält gültige JSON-Zeichenfolgen, einige Werte sind jedoch null. Wenn ich versuche, die folgenden:Eine vorhandene MySQL-Spalte zu einem JSON-Datentyp ändern
alter table log modify request json
es mit dem folgenden Fehler fehl:
Invalid JSON text: "The document is empty." at position 0 in value for column '#sql-2f36_168a6.request'
Allerdings, wenn ich erstellen Sie eine neue Spalte:
alter table log add request_json json
und dann die gleichen Daten ein:
update log set request_json=json where request != ''
der neue request_json Spalte wird aktualisiert. Wie ändere ich die vorhandene Spalte in den JSON-Datentyp und behalte die JSON-Daten bei, ohne eine neue Spalte zu erstellen?
Sie Unterschied in Ihrer Spalte zwischen 'NULL' und' '' '?. Führen Sie 'SELECT \' log \ 'FROM \' request \ 'WHERE JSON_VALID (\' log \ ') = 0 \ G aus, um diejenigen Zeilen zu erkennen, die Probleme verursachen können. – wchiquito
Ich habe Ihre Abfrage ausgeführt und ein paar hundert mit null oder leere Werte gefunden. ist NULL für json Datentypen ungültig? –
Also nach dem Spielen mit etwas mehr scheint es, dass NULL gültig ist, aber ein leerer Wert ist ungültig. Klingt das wahr? –