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, TEXTwenn 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