sql >> Databasteknik >  >> RDS >> MariaDB

AWS RDS:"SQLSTATE[22001] – Data för lång för kolumn" med MariaDB 10.2

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 – STRICT_TRANS_TABLES :

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

  1. Oracle Intervju frågor

  2. Hur snabbar jag på att räkna rader i en PostgreSQL-tabell?

  3. JSON_INSERT() – Infoga värden i ett JSON-dokument i MySQL

  4. 25 Microsoft Access-genvägar för att spara tid i tabeller i databladsvy