Arreglar los datos se trunca por un error de columna en MySQL
Este artículo demuestra las posibles razones y soluciones para un error, diciendo que Los datos están truncados para una columna
en MySQL.
Arreglar el error Los datos están truncados para una columna
en MySQL
Aquí, exploraremos las posibles razones y soluciones para deshacernos de un error que dice MySQL “los datos están truncados para una columna”.
Los datos son demasiado grandes
Hay algunos escenarios en los que tenemos que cargar los datos desde un archivo en lugar de insertarlos manualmente en la tabla MySQL. Durante la carga, puede ocurrir el error Datos truncados para una columna 'nombreColumna' en la fila #
. ¿Por qué?
Esto se debe a que los datos proporcionados parecen demasiado grandes para un tipo de datos de la columna de la tabla MySQL. Por ejemplo, tiene una tabla donde un atributo de valor
es de tipo texto
que solo puede acomodar 65 000 caracteres de los datos proporcionados.
Obtendrá este error cuando inserte datos para la columna valor
que supere los 65K.
Para resolver este problema, debe cambiar el tipo que puede aceptar más datos, como MEDIUMTEXT
o LONGTEXT
, que puede acomodar 16 MB y 4 GB. También puede encontrar algunos consejos de optimización aquí.
También podemos truncar los datos usando SET ANSI_WARNINGS OFF
e insertar los registros nuevamente, considerando la longitud máxima del tipo de datos de la columna.
Se pasan datos no válidos
El Código de error: 1265. Datos truncados para la columna 'a' en la fila 1
también ocurre en MySQL si intentamos insertar datos no válidos.
Por ejemplo, tenemos una tabla donde el campo precio
es de tipo flotante
y acepta los valores NULL
. Ver lo siguiente:
#create a table named `prices`
CREATE TABLE prices (ID INT NOT NULL, price FLOAT NULL);
#insert the first record
INSERT prices VALUES (1, '');
Aquí, insertamos una cadena vacía en la columna price
, un tipo float
que toma valores NULL
. Recuerde, NULL
y ''
no son lo mismo.
Aún así, si intentamos insertar una cadena vacía en una columna que toma valores NULOS
, generaría el Código de error: 1265. Datos truncados para la columna 'a' en la fila 1
. La solución más simple a este problema es pasar el valor correcto del tipo de datos correcto según lo requiera la columna respectiva de la tabla precio
.
Podemos resolverlo especificando los valores NULL
explícitamente en lugar de una cadena vacía (''
) o ni siquiera escribir los valores para esa columna en particular en la instrucción INSERT
. Vea el siguiente fragmento considerando nuestro ejemplo.
INSERT prices VALUES (1, NULL); #insert null explicitly
INSERT prices (ID) VALUES (2); #don't specify values for `price` column
Carácter de terminación incorrecto
Si insertamos cada línea manualmente en la tabla MySQL, todo va bien. El error ocurre cuando intentamos cargar más de una línea a la vez y no obtenemos correctamente el carácter de terminación.
Para resolver esto, debemos verificar el carácter de terminación del archivo y especificarlo en el comando CARGAR
de la siguiente manera.
#if the terminating character is `tab`
FIELDS TERMINATED BY '\t'
#if the terminating character is a `comma`
FIELDS TERMINATED BY ','