Tenemos una aplicación PHP con AWS RDS MariaDB como backend.
En la versión 10.0 utilizada anteriormente, todo estaba bien, pero justo después de actualizar a MariaDB 10.2, obtuvimos errores durante las pruebas:
PDOException:SQLSTATE[22001]:datos de cadena, truncados a la derecha:1406 Datos demasiado largos para la columna 'nombre' en la fila 1 en /data/projects/projectname/vendor/yiisoft/yii2/db/Command.php:1290
La primera solución aquí podría ser simplemente cambiando el tipo de columna de VARCHAR
al LONGTEXT
, como eso:
MariaDB [dbname]> ALTER TABLE table_name MODIFY column_name LONGTEXT;
Pero en este caso actual, esta no será la forma correcta.
La solución
Comprobar sql_mode
en el antiguo MariaDB RDS con el 10.0:
MariaDB [(none)]> select @@sql_mode;
+------------+
| @@sql_mode |
+------------+
| |
+------------+
Y sobre el nuevo, con el 10.2:
MariaDB [dbname]> select @@sql_mode;
+-------------------------------------------------------------------------------------------+
| @@sql_mode |
+-------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------+
Y eche un vistazo al grupo de Parámetros que se adjunta al nuevo RDS:
Esto es lo que necesitamos:las STRICT_TRANS_TABLES
:
Si un valor no se pudo insertar como se indica en una tabla transaccional, cancele la instrucción.
Ahora, debe sobrescribir el valor predeterminado ""STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION “:” valor para el NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
:
Vuelva a conectarse a la consola de MySQL y verifique nuevamente:
MariaDB [(none)]> select @@sql_mode;
+--------------------------------------------+
| @@sql_mode |
+--------------------------------------------+
| NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+
Listo.
Publicaciones similares
08/08/2019 AWS RDS:SQLSTATE[22001]:datos demasiado largos para la columna MariaDB 10.214/05/2019 AWS:MariaDB RDS – matar:no eres propietario del hilo13/12/2016 AWS:RDS Aurora db.t2.medium frente a t2.nano y MariaDB03/09/2016 AWS:миграция RTFM, часть #2:ручное создание инфраструктуры – AIM, S3, RDS y EBS