MariaDB
 sql >> Database >  >> RDS >> MariaDB

AWS RDS:"SQLSTATE[22001] – Dati troppo lunghi per la colonna" utilizzando MariaDB 10.2

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