Lo que básicamente es
Es una sintaxis incorrecta lo que hace que MySQL piense que está intentando hacer algo con una columna o parámetro que tiene el tipo incorrecto "DOUBLE".
Aprende de mi error
En mi caso, actualicé la columna varchar en una configuración de tabla NULL
donde se encontraba el valor 0
. Mi consulta de actualización fue así:
UPDATE myTable SET myValue = NULL WHERE myValue = 0;
Ahora, ya que el tipo real de myValue
es VARCHAR(255)
esto da la advertencia:
+---------+------+-----------------------------------------------+
| Level | Code | Message |
+---------+------+-----------------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'value xyz' |
+---------+------+-----------------------------------------------+
¡Y ahora myTable
está prácticamente vacío, porque myValue
ahora está NULL
por CADA FILA en la tabla! ¿Cómo pasó esto?
* gritos internos *
Más de 30k filas ahora tienen datos faltantes.
* los gritos internos se intensifican *
Gracias a Dios por las copias de seguridad. Pude recuperar todos los datos.
* la intensidad interna de los gritos disminuye *
La consulta corregida es la siguiente:
UPDATE myTable SET myValue = NULL WHERE myValue = '0';
^^^
Quotation here!
Desearía que esto fuera más que una advertencia, por lo que es menos peligroso olvidar esas citas.
* Fin de los gritos internos *