print - see content of table mysql
MySQL demasiado largo truncamiento varchar/configuraciĆ³n de error (3)
Tengo dos instancias de MySQL. El primero trunca las cadenas en la inserción cuando los datos son demasiado largos. El segundo genera un error:
ERROR 1406 (22001): Data too long for column ''xxx'' at row 1
Quiero que la segunda también trunca los datos. ¿Hay alguna configuración de MySQL para gestionar este comportamiento?
Puede deshabilitar STRICT_TRANS_TABLES
y STRICT_ALL_TABLES
. Esto permite el truncamiento automático de la cadena insertada.
Cita de la documentación de MySQL.
El modo estricto controla cómo MySQL maneja los valores no válidos o faltantes en las declaraciones de cambio de datos como INSERT o UPDATE. Un valor puede ser inválido por varias razones. Por ejemplo, podría tener el tipo de datos incorrecto para la columna o podría estar fuera de rango. Falta un valor cuando una nueva fila para insertar no contiene un valor para una columna que no sea NULL que no tenga una cláusula DEFAULT explícita en su definición. (Para una columna NULA, se inserta NULL si falta el valor).
Referencia: MySQL Server SQL Modes
Si el modo SQL estricto no está habilitado y asigna un valor a una columna CHAR o VARCHAR que excede la longitud máxima de la columna, el valor se trunca para ajustarse y se genera una advertencia. Para el truncamiento de caracteres no espaciales, puede provocar un error (en lugar de una advertencia) y suprimir la inserción del valor utilizando el modo SQL estricto. Consulte la Sección 6.1.7, “Modos SQL del servidor”.
Cómo puede cambiarlo: http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html
Encontré dos maneras de deshabilitar el modo estricto:
agregue abajo a my.cnf
sql-mode = "NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION"
forma es usar la consola mysql.
SET @@ global.sql_mode = '''';
Por favor, pruébelos antes de ejecutar en el entorno de producción.
si usas cpanel,
reemplazar
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
en /usr/my.cnf
a
sql-mode=""
correr
/etc/init.d/mysql restart