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