Что это в основном такое
Это неправильный синтаксис, который заставляет 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!
Хотелось бы, чтобы это было больше, чем просто предупреждение, поэтому забыть эти цитаты менее опасно.
* Закончить внутренний крик *