GOOGLE ADS

Sonntag, 24. April 2022

MySQL legt den Standardwert auf eine Spalte vom Typ JSON fest

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

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...