Vi har en PHP-applikation med AWS RDS MariaDB som backend.
På den tidigare använda 10.0-versionen var allt bra, men direkt efter att vi uppgraderat till MariaDB 10.2 – fick fel under tester:
PDOException:SQLSTATE[22001]:Strängdata, höger trunkerad:1406 Data för långa för kolumn 'namn' på rad 1 i /data/projects/projectname/vendor/yiisoft/yii2/db/Command.php:1290
Den första lösningen här kan vara att bara ändra kolumntypen från VARCHAR
till LONGTEXT
, sådär:
MariaDB [dbname]> ALTER TABLE table_name MODIFY column_name LONGTEXT;
Men i det här aktuella fallet kommer detta inte att vara rätt sätt.
Lösningen
Kontrollera sql_mode
på den gamla MariaDB RDS med 10.0:
MariaDB [(none)]> select @@sql_mode;
+------------+
| @@sql_mode |
+------------+
| |
+------------+
Och på den nya, med 10.2:
MariaDB [dbname]> select @@sql_mode;
+-------------------------------------------------------------------------------------------+
| @@sql_mode |
+-------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------+
Och ta en titt på Parametergruppen som är ansluten till den nya RDS:
Här är vad vi behöver här –
Om ett värde inte kunde infogas i en transaktionstabell, avbryt satsen.
Nu måste du skriva över standardvärdet ""STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION ":"-värdet till NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
:
Återanslut till MySQL-konsolen och kontrollera igen:
MariaDB [(none)]> select @@sql_mode;
+--------------------------------------------+
| @@sql_mode |
+--------------------------------------------+
| NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+
Klart.
Liknande inlägg
- 08/08/2019 AWS RDS:SQLSTATE[22001] – Data för långa för kolumn i MariaDB 10.2
- 05/14/2019 AWS:MariaDB RDS – kill:Du är inte ägare till tråden
- 12/13/2016 AWS:RDS Aurora db.t2.medium vs t2.nano och MariaDB
- 09/03/2016 AWS:миграция RTFM, часть #2:ручное создание инфраструктуры – AIM, S3, RDS och EBS