Abbiamo un'applicazione PHP con AWS RDS MariaDB come backend.
Sulla versione 10.0 utilizzata in precedenza tutto andava bene, ma subito dopo l'aggiornamento a MariaDB 10.2 – si sono verificati errori durante i test:
PDOException:SQLSTATE[22001]:String data, troncata a destra:1406 Dati troppo lunghi per la colonna 'name' alla riga 1 in /data/projects/projectname/vendor/yiisoft/yii2/db/Command.php:1290
La prima soluzione qui potrebbe essere semplicemente cambiando il tipo di colonna da VARCHAR
al LONGTEXT
, come quello:
MariaDB [dbname]> ALTER TABLE table_name MODIFY column_name LONGTEXT;
Ma in questo caso, questo non sarà il modo giusto.
La soluzione
Controlla sql_mode
sul vecchio MariaDB RDS con 10.0:
MariaDB [(none)]> select @@sql_mode;
+------------+
| @@sql_mode |
+------------+
| |
+------------+
E su quello nuovo, con il 10.2:
MariaDB [dbname]> select @@sql_mode;
+-------------------------------------------------------------------------------------------+
| @@sql_mode |
+-------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------+
E dai un'occhiata al gruppo di parametri che è allegato al nuovo RDS:
Ecco di cosa abbiamo bisogno qui:il STRICT_TRANS_TABLES
:
Se non è stato possibile inserire un valore come indicato in una tabella transazionale, interrompere l'istruzione.
Ora, è necessario sovrascrivere l'impostazione predefinita ""STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION “:” valore al NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
:
Riconnettiti alla console MySQL e controlla di nuovo:
MariaDB [(none)]> select @@sql_mode;
+--------------------------------------------+
| @@sql_mode |
+--------------------------------------------+
| NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+
Fatto.
Post simili
- 08/08/2019 AWS RDS:SQLSTATE[22001] – Dati troppo lunghi per la colonna в MariaDB 10.2
- 14/05/2019 AWS:MariaDB RDS – kill:non sei il proprietario del thread
- 13/12/2016 AWS:RDS Aurora db.t2.medium vs t2.nano e MariaDB
- 09/03/2016 AWS:миграция RTFM, часть #2:ручное создание инфраструктуры – AIM, S3, RDS ed EBS