Schlägt Alter Table fehl, weil eine Zeile hat falsche Daten, Falsche datetime value: '0000-00-00 00:00:00'
Ich bin eine Aktualisierung der aktuellen user-Tabelle mit der folgenden Anweisung:
`ALTER TABLE `users` ADD `title` VARCHAR( 5 ) NULL DEFAULT NULL AFTER `surname` ;`
Welche gibt die folgende Fehlermeldung zurück:
#1292 - Incorrect datetime value: '0000-00-00 00:00:00' for column 'created_at' at row 1
Created_at Spalte Struktur ist:
created_at datetime NOT NULL
Nicht sicher, warum die Daten ungültig sind - könnte es sein, mit MySQL-Versionen (vom 5.5.43 in 5.1.73)?
Den fix habe ich im moment ist die Aktualisierung der datetime-Wert, bevor Sie die ALTER TABLE-Anweisung:
UPDATE `users` SET `created_at`='2014-01-01 00:00:00' WHERE `created_at`='0000-00-00 00:00:00';
Ist dies eine vernünftige Lösung?
- Scheint sehr vernünftig zu mir.
- Fügen Sie bitte die Ausgabe von
SELECT @@SQL_MODE, @@VERSION;
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die MySQL-docs sagen
Auch:
So Michael - sqlbot stellte Sie die richtige Frage stellen.
Es scheint, dass '0000-00-00 00:00:00' behandelt wird, als NULL in die neue MySQL-version, aber nicht Ihr Alter, und Sie haben angegeben, dass die DB sollte nicht NULL-Werte annehmen ("NICHT NULL").
sollten Sie deaktivieren, STRICT_TRANS_TABLES Modus
bzw.
gehen Sie zu
/etc/mysql/my.cnf
& kommentierenSTRICT_TRANS_TABLES
nützlicher Hinweis SQL-STRICT-MODUS