Nous avons une application PHP avec AWS RDS MariaDB comme backend.
Sur la version 10.0 utilisée précédemment, tout allait bien, mais juste après la mise à niveau vers MariaDB 10.2, des erreurs se sont produites lors des tests :
PDOException : SQLSTATE[22001] : Données de chaîne, tronquées à droite :1406 Données trop longues pour la colonne "nom" à la ligne 1 dans /data/projects/projectname/vendor/yiisoft/yii2/db/Command.php:1290
La première solution ici pourrait être simplement de changer le type de la colonne à partir du VARCHAR
au LONGTEXT
, comme ça:
MariaDB [dbname]> ALTER TABLE table_name MODIFY column_name LONGTEXT;
Mais dans le cas présent, ce ne sera pas la bonne manière.
La solution
Vérifiez sql_mode
sur l'ancien MariaDB RDS avec le 10.0 :
MariaDB [(none)]> select @@sql_mode;
+------------+
| @@sql_mode |
+------------+
| |
+------------+
Et sur le nouveau, avec le 10.2 :
MariaDB [dbname]> select @@sql_mode;
+-------------------------------------------------------------------------------------------+
| @@sql_mode |
+-------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------+
Et jetez un œil au groupe de paramètres qui est attaché au nouveau RDS :
Voici ce dont nous avons besoin ici :les STRICT_TRANS_TABLES
:
Si une valeur n'a pas pu être insérée telle qu'elle a été donnée dans une table transactionnelle, abandonnez l'instruction.
Maintenant, il faut remplacer la valeur par défaut ""STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION ":" valeur pour le NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
:
Reconnectez-vous à la console MySQL et vérifiez à nouveau :
MariaDB [(none)]> select @@sql_mode;
+--------------------------------------------+
| @@sql_mode |
+--------------------------------------------+
| NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+
Terminé.
Articles similaires
- 08/08/2019 AWS RDS :SQLSTATE[22001] – Données trop longues pour la colonne MariaDB 10.2
- 14/05/2019 AWS :MariaDB RDS - kill :vous n'êtes pas propriétaire du fil
- 13/12/2016 AWS :RDS Aurora db.t2.medium vs t2.nano et MariaDB
- 09/03/2016 AWS :modèle RTFM, élément n° 2 :ручное создание инфраструктуры – AIM, S3, RDS et EBS