sql >> Base de Datos >  >> RDS >> MariaDB

AWS RDS:"SQLSTATE[22001]:datos demasiado largos para la columna" con MariaDB 10.2

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.2
  • 14/05/2019 AWS:MariaDB RDS – matar:no eres propietario del hilo
  • 13/12/2016 AWS:RDS Aurora db.t2.medium frente a t2.nano y MariaDB
  • 03/09/2016 AWS:миграция RTFM, часть #2:ручное создание инфраструктуры – AIM, S3, RDS y EBS