Was es im Grunde ist
Es ist eine falsche Syntax, die MySQL zu der Annahme veranlasst, dass Sie versuchen, etwas mit einer Spalte oder einem Parameter vom falschen Typ "DOUBLE" zu tun.
Lerne aus meinem Fehler
In meinem Fall habe ich die varchar-Spalte in einer Tabelleneinstellung aktualisiert, in der NULL
der Wert 0
stand. Meine Update-Abfrage war wie folgt:
UPDATE myTable SET myValue = NULL WHERE myValue = 0;
Nun, da der tatsächliche Typ von myValue
ist, VARCHAR(255)
gibt dies die Warnung:
+---------+------+-----------------------------------------------+
| Level | Code | Message |
+---------+------+-----------------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'value xyz' |
+---------+------+-----------------------------------------------+
Und jetzt myTable
ist praktisch leer, denn myValue
jetzt ist NULL
für JEDE REIHE in der Tabelle! Wie ist es passiert?
* inneres Schreien *
In über 30.000 Zeilen fehlen jetzt Daten.
* inneres Schreien verstärkt sich *
Gott sei Dank für Backups. Ich konnte alle Daten wiederherstellen.
* interne Schreiintensität sinkt *
Die korrigierte Abfrage lautet wie folgt:
UPDATE myTable SET myValue = NULL WHERE myValue = '0';
^^^
Quotation here!
Ich wünschte, dies wäre mehr als nur eine Warnung, daher ist es weniger gefährlich, diese Zitate zu vergessen.
* Internes Schreien beenden *