MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

AWS RDS:“SQLSTATE[22001] – Dados muito longos para coluna” usando MariaDB 10.2


Temos um aplicativo PHP com o AWS RDS MariaDB como back-end.

Na versão 10.0 usada anteriormente estava tudo bem, mas logo após atualizarmos para o MariaDB 10.2 – obtivemos erros durante os testes:

PDOException:SQLSTATE[22001]:Dados de string, truncados à direita:1406 Dados muito longos para a coluna ‘name’ na linha 1 em /data/projects/projectname/vendor/yiisoft/yii2/db/Command.php:1290

A primeira solução aqui poderia ser apenas alterando o tipo da coluna do VARCHAR para o LONGTEXT , Curtiu isso:

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

Mas neste caso atual, este não será o caminho certo.

A solução


Verifique sql_mode no antigo MariaDB RDS com o 10.0:

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

E no novo, com o 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 dê uma olhada no grupo de parâmetros que está anexado ao novo RDS:



Aqui está o que precisamos aqui - o STRICT_TRANS_TABLES :

Se um valor não puder ser inserido conforme fornecido em uma tabela transacional, aborte a instrução.

Agora, é necessário substituir o padrão “”STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION “:” para o valor NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION :



Reconecte-se ao console MySQL e verifique novamente:

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

Feito.

Postagens semelhantes

  • 08/08/2019 AWS RDS:SQLSTATE[22001] – Dados muito longos para a coluna в MariaDB 10.2
  • 14/05/2019 AWS:MariaDB RDS – kill:Você não é o proprietário do encadeamento
  • 13/12/2016 AWS:RDS Aurora db.t2.medium vs t2.nano e MariaDB
  • 03/09/2016 AWS:миграция RTFM, часть #2:ручное создание инфраструктуры – AIM, S3, RDS e EBS