Vi har en PHP-applikation med AWS RDS MariaDB som backend.
På den tidligere brugte 10.0-version var alt godt, men lige efter vi opgraderede til MariaDB 10.2 – fik vi fejl under test:
PDOException:SQLSTATE[22001]:Strengdata, højre trunkeret:1406 Data for lange til kolonne 'navn' i række 1 i /data/projects/projectname/vendor/yiisoft/yii2/db/Command.php:1290
Den første løsning her kunne være blot ved at ændre kolonnens type fra VARCHAR
til LONGTEXT
, sådan:
MariaDB [dbname]> ALTER TABLE table_name MODIFY column_name LONGTEXT;
Men i dette aktuelle tilfælde vil dette ikke være den rigtige måde.
Løsningen
Tjek sql_mode
på den gamle MariaDB RDS med 10.0:
MariaDB [(none)]> select @@sql_mode;
+------------+
| @@sql_mode |
+------------+
| |
+------------+
Og på den nye 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 |
+-------------------------------------------------------------------------------------------+
Og tag et kig på Parametergruppen som er knyttet til den nye RDS:
Her er, hvad vi har brug for her –
Hvis en værdi ikke kunne indsættes som angivet i en transaktionstabel, skal du afbryde sætningen.
Nu skal du overskrive standard ""STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION ":" værdi til NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
:
Genopret forbindelse til MySQL-konsollen, og tjek igen:
MariaDB [(none)]> select @@sql_mode;
+--------------------------------------------+
| @@sql_mode |
+--------------------------------------------+
| NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+
Færdig.
Lignende indlæg
- 08/08/2019 AWS RDS:SQLSTATE[22001] – Data for lange til kolonne i MariaDB 10.2
- 14/05/2019 AWS:MariaDB RDS – dræb:Du er ikke ejer af tråden
- 13/12/2016 AWS:RDS Aurora db.t2.medium vs t2.nano og MariaDB
- 09/03/2016 AWS:миграция RTFM, часть #2:ручное создание инфраструктуры – AIM, S3, RDS og EBS