Cuando se ejecuta la consulta SQL a continuación:
UPDATE shop_category
SET name = 'Secolul XVI - XVIII'
AND name_eng = '16th to 18th centuries'
WHERE category_id = 4768
Se genera el siguiente error:
1292 - Truncated incorrect DOUBLE value: 'Secolul XVI - XVIII'
¿Cómo arreglar esto?
shop_category
estructura de la mesa:
category_id mediumint(8)
name varchar(250)
name_eng varchar(250)
Respuestas:
No necesitas la
AND
palabra clave. Aquí está la sintaxis correcta de la instrucción UPDATE :fuente
Obtuve esta excepción no por AND en lugar de coma, de hecho, tuve esta excepción solo porque no estaba usando apóstrofes en la cláusula where.
Como si mi consulta fuera
cuando cambié la cláusula where a
where column2 in ('00012121');
entonces la consulta funcionó bien para mí.fuente
STRICT_TRANS_TABLES
establecidosql_mode
e intentando actualizar un campo limitado con (lo que parecía ser) un valor numérico en lawhere
cláusula arrojó un error. Al cambiar de modo, lanzó una advertencia, pero aún no aplicó la actualización. Tras una inspección más cercana, la columna utilizada en la cláusula where, a pesar de tener solo lo que parecían ser valores enteros, era en realidad unvarchar(20)
Intenta reemplazar el
AND
con,
La sintaxis de ACTUALIZACIÓN muestra que la coma debe usarse como separador.
fuente
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 valor0
. Mi consulta de actualización fue así:Ahora, ya que el tipo real de
myValue
esVARCHAR(255)
esto da la advertencia:¡Y ahora
myTable
está prácticamente vacío, porquemyValue
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:
Desearía que esto fuera más que una advertencia, por lo que es menos peligroso olvidar esas citas.
* Fin de los gritos internos *
fuente
Acabo de perder mi tiempo en esto y quería agregar un caso adicional donde este error se presenta.
Datos de prueba
El problema es
ORDER BY value1+0
: tipo de fundición.Sé que no responde la pregunta, pero este es el primer resultado en Google para este error y debería tener otros ejemplos donde este error se presente.
fuente
Las cadenas de consulta principalmente inválidas darán esta advertencia.
Incorrecto debido a un error de sintaxis sutil (paréntesis derecho mal colocado) al usar la
INSTR
función:Correcto:
fuente
Parece que mysql maneja el tipo de conversión con gracia con las instrucciones SELECT. El campo shop_id es de tipo varchar pero las sentencias select funcionan
Pero cuando intentas actualizar los campos
Se produce un error con el error DOBLE incorrecto truncado: '1t5hxq9'
Debe poner el shop_id 26244317283 entre comillas '26244317283' para que la consulta funcione, ya que el campo es de tipo varchar no int
fuente
Si tiene este problema con una inserción que se parece a la siguiente, el problema puede ser simplemente la falta de espacio entre
--
el texto del comentario y el siguiente:El problema con esto es que en
--something
realidad debería estar-- something
con un espacio.fuente
Experimenté este error al usar bindParam, y al especificar PDO :: PARAM_INT donde realmente estaba pasando una cadena. Cambiar a PDO :: PARAM_STR corrigió el error.
fuente
Experimenté este error cuando intenté hacer un WHERE EXIST donde la subconsulta coincidía con 2 columnas que, de manera accidental, eran de diferentes tipos. Las dos mesas también tenían diferentes motores de almacenamiento.
Una columna era un CHAR (90) y la otra era un BIGINT (20).
Una mesa era InnoDB y la otra era MEMORY.
Parte de la consulta:
Cambiar el tipo de columna en una columna de BIGINT a CHAR resolvió el problema.
fuente