Máme jako backend PHP aplikaci s AWS RDS MariaDB.
Na dříve používané verzi 10.0 bylo vše v pořádku, ale hned poté, co jsme upgradovali na MariaDB 10.2 – došlo během testů k chybám:
PDOException:SQLSTATE[22001]:Data řetězce, vpravo zkrácená:1406 Data jsou příliš dlouhá pro sloupec ‚name‘ na řádku 1 v /data/projects/projectname/vendor/yiisoft/yii2/db/Command.php:1290
Prvním řešením by zde mohla být pouze změna typu sloupce z VARCHAR
do LONGTEXT
, takhle:
MariaDB [dbname]> ALTER TABLE table_name MODIFY column_name LONGTEXT;
Ale v tomto aktuálním případě to nebude správná cesta.
Řešení
Zkontrolujte sql_mode
na staré MariaDB RDS s 10.0:
MariaDB [(none)]> select @@sql_mode;
+------------+
| @@sql_mode |
+------------+
| |
+------------+
A na novém, s 10.2:
MariaDB [dbname]> select @@sql_mode;
+-------------------------------------------------------------------------------------------+
| @@sql_mode |
+-------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------+
A podívejte se na skupinu Parametry který je připojen k novému RDS:
Zde je to, co potřebujeme – STRICT_TRANS_TABLES
:
Pokud hodnotu nelze vložit do transakční tabulky tak, jak je uvedena, zrušte příkaz.
Nyní je potřeba přepsat výchozí „“STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION Hodnota „:“ do NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
:
Znovu se připojte ke konzole MySQL a znovu zkontrolujte:
MariaDB [(none)]> select @@sql_mode;
+--------------------------------------------+
| @@sql_mode |
+--------------------------------------------+
| NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+
Hotovo.
Podobné příspěvky
- 08/08/2019 AWS RDS:SQLSTATE[22001] – Data jsou příliš dlouhá pro sloupec v MariaDB 10.2
- 14.05.2019 AWS:MariaDB RDS – kill:Nejste vlastníkem vlákna
- 13. 12. 2016 AWS:RDS Aurora db.t2.medium vs t2.nano a MariaDB
- 09/03/2016 AWS:миграция RTFM, часть #2:ручное создание инфраструктуры – AIM, S3, RDS a EBS