Что это в основном
Это неправильный синтаксис, который заставляет MySQL думать, что вы пытаетесь что-то сделать со столбцом или параметром, который имеет неправильный тип «DOUBLE».
Учись на моей ошибке
В моем случае я обновил столбец varchar в таблице, в NULL
которой 0
стояло значение . Мой запрос на обновление был таким:
UPDATE myTable SET myValue = NULL WHERE myValue = 0;
Теперь, так как фактический тип myValue
является VARCHAR(255)
это дает предупреждение:
+---------+------+-----------------------------------------------+
| Level | Code | Message |
+---------+------+-----------------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'value xyz' |
+---------+------+-----------------------------------------------+
А сейчас myTable
практически пусто, потому что myValue
теперь NULL
на КАЖДОЙ СТРОКЕ в таблице! Как это произошло?
* внутренний крик *
Более 30 тысяч строк теперь имеют недостающие данные.
* внутренний крик усиливается *
Слава Богу за резервные копии. Я был в состоянии восстановить все данные.
* внутренняя интенсивность крика снижается *
Исправленный запрос выглядит следующим образом:
UPDATE myTable SET myValue = NULL WHERE myValue = '0';
^^^
Quotation here!
Хотелось бы, чтобы это было больше, чем просто предупреждение, поэтому забыть эти цитаты менее опасно.
* Конец внутреннего крика *