Beim Versuch, den Datentyp einer Spalte zu ändern und einen neuen Standardwert festzulegen, wurde folgende Fehlermeldung angezeigt:
ALTER TABLE foobar_data ALTER COLUMN col VARCHAR(255) NOT NULL SET DEFAULT '{}';
FEHLER 1064 (42000): In Ihrer SQL-Syntax ist ein Fehler aufgetreten. Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, auf die richtige Syntax für 'VARCHAR (255) NOT NULL SET DEFAULT' {} '' in Zeile 1
Antworten:
Eine zweite Möglichkeit, die dasselbe tut (danke an juergen_d):
quelle
column
ist optional. Sie könnten einfachALTER TABLE foobar_data MODIFY col VARCHAR(255) NOT NULL DEFAULT '{}';
oder verwendenALTER TABLE foobar_data CHANGE col col VARCHAR(255) NOT NULL DEFAULT '{}';
und das Ergebnis wird das gleiche sein.{}
.col
richtig , zwei s nebeneinander zu schreiben ? (socol col
)DEFAULT
Wert ändern müssen . Dadurch werden alle Zeilen der Tabelle umsonst verarbeitet (bei großen Tabellen sehr lang). Verwenden Sie stattdessen,ALTER TABLE <table_name> ALTER COLUMN <column_name> SET DEFAULT <value>
was sofort ist.Wenn Sie im Nachhinein nur einen Standard festlegen möchten, können Sie mit ziemlicher Sicherheit die Syntax ALTER .. SET verwenden. Steck einfach nicht all die anderen Sachen da rein. Wenn Sie den Rest der Spaltendefinition einfügen möchten, verwenden Sie die Syntax MODIFY oder CHANGE gemäß der akzeptierten Antwort.
Wie auch immer, die ALTER-Syntax zum Festlegen eines Spaltenstandards (da ich danach gesucht habe, als ich hierher kam):
Für welches 'Literal' könnte auch eine Zahl sein (zB
...SET DEFAULT 0
). Ich habe es nicht ausprobiert,...SET DEFAULT CURRENT_TIMESTAMP
aber warum nicht?quelle
ALTER TABLE table_name MODIFY COLUMN column_name TIMESTAMP NOT NULL DEFAULT current_timestamp;
DEFAULT
Wert zu ändern .NOW()
odercurrent_timestamp()
@Malaise @NereisWenn Sie einen Standardwert für eine bereits erstellte Spalte hinzufügen möchten, funktioniert dies für mich:
quelle
Für DEFAULT CURRENT_TIMESTAMP:
Bitte beachten Sie die doppelte Spaltennamendeklaration
DEFAULT CURRENT_TIMESTAMP entfernen:
quelle
Akzeptierte Antwort funktioniert gut.
Bei ungültiger Verwendung des NULL- Wertfehlers aktualisieren Sie bei NULL- Werten alle Nullwerte auf den Standardwert in dieser Spalte und versuchen Sie dann, die Änderung vorzunehmen.
quelle
Falls das oben genannte für Sie nicht funktioniert (dh Sie arbeiten mit neuem SQL oder Azure ), versuchen Sie Folgendes:
1) Löschen Sie die vorhandene Spaltenbeschränkung (falls vorhanden):
2) Erstellen Sie eine neue:
quelle
Versuche dies
so was
quelle