sql >> Database >  >> RDS >> MariaDB

AWS RDS:"SQLSTATE [22001] - Gegevens te lang voor kolom" met MariaDB 10.2

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

  1. Hoe kan ik meerdere functie-evaluaties vermijden met de (func()).* syntaxis in een SQL-query?

  2. Hoe SalesForce als gegevensbron in Pyramid te verbinden

  3. Hoe maak je een index voor elementen van een array in PostgreSQL?

  4. Verbinding maken met host PostgreSQL vanaf een zwervende virtualbox-machine