Ich habe gehört, dass die MySQL-Version vor 8.0.13 den Standardwert für die JSON-Typ-Spalte akzeptiert, also verwende ich das cmd:
ALTER TABLE templates CHANGE COLUMN values JSON NOT NULL DEFAULT '{}';
aber Fehler erhalten:
Error Code: 1101. BLOB, TEXT, GEOMETRY or JSON column 'values' can't have a default value
Wie kann ich es also beheben?
Ich verwende MySQL Version 8.0.19 und das Client-Tool Workbench
Lösung des Problems
Ab Version 8.0.13 heißt es in der Dokumentation (Hervorhebung von mir):
Den Datentypen,, und kann nur dann ein Standardwert zugewiesen werdenBLOB
, TEXT
wenn derGEOMETRY
Wert als Ausdruck geschrieben wird, selbst wenn der Ausdruckswert ein Literal ist.JSON
Sie können Ihren Standardausdruck zu einem Ausdruck machen, indem Sie den Literalwert in Klammern setzen:
ALTER TABLE templates CHANGE COLUMN values JSON NOT NULL DEFAULT ('{}');
Oder:
ALTER TABLE templates CHANGE COLUMN values JSON NOT NULL DEFAULT (JSON_OBJECT());
Vor Version 8.0.13 von MySQL war es nicht möglich, einen Standardwert für eine JSON-Spalte festzulegen, wie die 8.0-Dokumentation einige Absätze später hervorhebt:
Den Datentypen BLOB
, TEXT
, GEOMETRY
, und kann kein Standardwert zugewiesen werden.JSON
Keine Kommentare:
Kommentar veröffentlichen