Имаме 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