We hebben een PHP-applicatie met de AWS RDS MariaDB als backend.
Op de eerder gebruikte 10.0-versie was alles goed, maar direct nadat we hadden geüpgraded naar MariaDB 10.2 kregen we fouten tijdens tests:
PDOException:SQLSTATE[22001]:Stringgegevens, rechts afgekapt:1406 Gegevens te lang voor kolom 'naam' op rij 1 in /data/projects/projectname/vendor/yiisoft/yii2/db/Command.php/1290
De eerste oplossing hier zou kunnen zijn door het type van de kolom te veranderen van de VARCHAR
naar de LONGTEXT
, zoals dat:
MariaDB [dbname]> ALTER TABLE table_name MODIFY column_name LONGTEXT;
Maar in dit huidige geval is dit niet de juiste manier.
De oplossing
Controleer sql_mode
op de oude MariaDB RDS met de 10.0:
MariaDB [(none)]> select @@sql_mode;
+------------+
| @@sql_mode |
+------------+
| |
+------------+
En op de nieuwe, met de 10.2:
MariaDB [dbname]> select @@sql_mode;
+-------------------------------------------------------------------------------------------+
| @@sql_mode |
+-------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------+
En neem een kijkje in de Parameters groep die is gekoppeld aan de nieuwe RDS:
Dit is wat we hier nodig hebben:de STRICT_TRANS_TABLES
:
Als een waarde niet zoals opgegeven in een transactietabel kan worden ingevoegd, breek dan de instructie af.
Nu moet u de standaard ""STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION overschrijven “:” waarde aan de NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
:
Maak opnieuw verbinding met de MySQL-console en controleer opnieuw:
MariaDB [(none)]> select @@sql_mode;
+--------------------------------------------+
| @@sql_mode |
+--------------------------------------------+
| NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+
Klaar.
Vergelijkbare berichten
- 08/08/2019 AWS RDS:SQLSTATE[22001] – Gegevens te lang voor kolom в MariaDB 10.2
- 14-05-2019 AWS:MariaDB RDS – kill:je bent geen eigenaar van de thread
- 13-12-2016 AWS:RDS Aurora db.t2.medium vs t2.nano en MariaDB
- 09/03/2016 AWS:миграция RTFM, часть #2:ручное создание инфраструктуры – AIM, S3, RDS en EBS