¿Datos truncados para la columna?


Después de cambiar el tipo de datos de una columna MySQL con el fin de almacenar Twilio call ids (34 cadenas de caracteres), trato de cambiar manualmente los datos en esa columna con:

update calls 
   set incoming_Cid='CA9321a83241035b4c3d3e7a4f7aa6970d' 
 where id='1';

Sin embargo, recibo un error que no tiene sentido ya que el tipo de datos de la columna se modificó correctamente?

| Level ||| Code | Message | Warning | 1265 | Data truncated for column 'incoming_Cid' at row 1

Author: pixelistik, 2013-08-06

4 answers

Su problema es que en este momento su columna incoming_Cid definida como CHAR(1) cuando debería ser CHAR(34).

Para solucionar esto, simplemente ejecute este comando para cambiar la longitud de sus columnas de 1 a 34

ALTER TABLE calls CHANGE incoming_Cid incoming_Cid CHAR(34);

Aquí está SQLFiddle demo

 49
Author: peterm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-06 21:21:09

Emitiendo esta declaración:

ALTER TABLES call MODIFY incoming_Cid CHAR;

... ha omitido el parámetro length. Por lo tanto, su consulta era equivalente a:

ALTER TABLE calls MODIFY incoming_Cid CHAR(1);

Debe especificar el tamaño del campo para tamaños mayores que 1:

ALTER TABLE calls MODIFY incoming_Cid CHAR(34);
 6
Author: RandomSeed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-06 21:18:15

Sin embargo, recibo un error que no tiene sentido ya que el tipo de datos de la columna se modificó correctamente?

| Level | Code | Msg | Warn | 12 | Data truncated for column 'incoming_Cid' at row 1

A menudo puede recibir este mensaje cuando está haciendo algo como lo siguiente:

REPLACE INTO table2 (SELECT * FROM table1);

Resultó en nuestro caso en el siguiente error:

SQL Exception: Data truncated for column 'level' at row 1

El problema resultó ser la desalineación de la columna que resultó en un tinyint tratando de almacenarse en un campo datetime o viceversa.

 3
Author: Gray,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-13 18:45:19

Tuve el mismo problema debido a una columna de tabla que se definió como ENUM('x','y','z') y más tarde estaba tratando de guardar el valor 'a' en esta columna, por lo que obtuve el error mencionado.

Resuelto alterando la definición de la columna de la tabla y el valor agregado 'a' en el conjunto de enumeraciones.

 2
Author: MTurPash,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-01 08:37:02