MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

AWS RDS:„SQLSTATE[22001] – Daten zu lang für Spalte“ unter Verwendung von MariaDB 10.2

Wir haben eine PHP-Anwendung mit der AWS RDS MariaDB als Backend.

Auf der zuvor verwendeten Version 10.0 war alles gut, aber direkt nach dem Upgrade auf MariaDB 10.2 – traten während der Tests Fehler auf:

PDOException:SQLSTATE[22001]:String-Daten, rechts abgeschnitten:1406 Daten zu lang für Spalte „Name“ in Zeile 1 in /data/projects/projectname/vendor/yiisoft/yii2/db/Command.php:1290

Die erste Lösung hier könnte darin bestehen, einfach den Spaltentyp von VARCHAR zu ändern zum LONGTEXT , so wie das:

MariaDB [dbname]> ALTER TABLE table_name MODIFY column_name LONGTEXT;

Aber in diesem aktuellen Fall wird das nicht der richtige Weg sein.

Die Lösung

Überprüfen Sie sql_mode auf dem alten MariaDB RDS mit 10.0:

MariaDB [(none)]> select @@sql_mode;
+------------+
| @@sql_mode |
+------------+
|            |
+------------+

Und auf dem neuen, mit dem 10.2:

MariaDB [dbname]> select @@sql_mode;
+-------------------------------------------------------------------------------------------+
| @@sql_mode                                                                                |
+-------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------+

Sehen Sie sich auch die Parametergruppe an die dem neuen RDS beigefügt ist:

Hier ist, was wir hier brauchen – die STRICT_TRANS_TABLES :

Wenn ein Wert nicht wie angegeben in eine Transaktionstabelle eingefügt werden konnte, brechen Sie die Anweisung ab.

Jetzt müssen Sie den Standard „“STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION überschreiben „:“-Wert zum NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION :

Verbinden Sie sich erneut mit der MySQL-Konsole und überprüfen Sie erneut:

MariaDB [(none)]> select @@sql_mode;
+--------------------------------------------+
| @@sql_mode                                 |
+--------------------------------------------+
| NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+

Fertig.

Ähnliche Beiträge

  • 08.08.2019 AWS RDS:SQLSTATE[22001] – Daten zu lang für Spalte in MariaDB 10.2
  • 14.05.2019 AWS:MariaDB RDS – kill:Sie sind nicht Eigentümer des Threads
  • 13.12.2016 AWS:RDS Aurora db.t2.medium vs. t2.nano und MariaDB
  • 03.09.2016 AWS:Migrieren Sie RTFM, Schritt #2:Führen Sie eine Verbindung zwischen AIM, S3, RDS und EBS aus