MariaDB
 sql >> база данни >  >> RDS >> MariaDB

AWS RDS:„SQLSTATE[22001] – Данните са твърде дълги за колона“ с помощта на MariaDB 10.2

Имаме PHP-приложение с AWS RDS MariaDB като бекенд.

В използваната по-рано версия 10.0 всичко беше добре, но веднага след като надстроихме до MariaDB 10.2 – получихме грешки по време на тестове:

PDOException:SQLSTATE[22001]:Данни низ, съкратен вдясно:1406 Данните са твърде дълги за колона „име“ на ред 1 в /data/projects/projectname/vendor/yiisoft/yii2/db/Command.php:1290

Първото решение тук може да бъде просто чрез промяна на типа на колоната от VARCHAR към LONGTEXT , така:

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

Но в настоящия случай това няма да е правилният начин.

Решението

Проверете sql_mode на стария MariaDB RDS с 10.0:

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

И на новия, с 10.2:

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

И разгледайте групата параметри който е прикрепен към новия RDS:

Ето какво ни трябва тук – STRICT_TRANS_TABLES :

Ако дадена стойност не може да бъде вмъкната, както е дадена в транзакционна таблица, прекратете оператора.

Сега трябва да презапишете стандартния „”STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION “:” стойност към NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION :

Свържете се отново с конзолата MySQL и проверете отново:

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

Готово.

Подобни публикации

  • 08.08.2019 AWS RDS:SQLSTATE[22001] – Данните са твърде дълги за колона в MariaDB 10.2
  • 14.05.2019 г. AWS:MariaDB RDS – kill:Не сте собственик на нишка
  • 13.12.2016 AWS:RDS Aurora db.t2.medium срещу t2.nano и MariaDB
  • 03.09.2016 г. AWS:миграция RTFM, част #2:ручное създаване на инфраструктуры – AIM, S3, RDS и EBS

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проектиране на база данни 101:Дялове в MySQL

  2. Предоставяне на по-бързи иновации в общността на MariaDB

  3. Преглед на клъстерирането на ProxySQL в ClusterControl

  4. Изпълнение на MariaDB Galera клъстер без инструменти за оркестриране на контейнери:Част първа

  5. Как ASIN() работи в MariaDB