MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

AWS RDS:„SQLSTATE[22001] — zbyt długie dane dla kolumny” przy użyciu MariaDB 10.2

Mamy aplikację PHP z AWS RDS MariaDB jako zapleczem.

Na poprzednio używanej wersji 10.0 wszystko było dobrze, ale zaraz po aktualizacji do MariaDB 10.2 – pojawiły się błędy podczas testów:

PDOException:SQLSTATE[22001]:Ciąg danych, obcięty do prawej:1406 Dane za długie dla kolumny „name” w wierszu 1 w /data/projects/projectname/vendor/yiisoft/yii2/db/Command.php:1290

Pierwszym rozwiązaniem może być po prostu zmiana typu kolumny z VARCHAR do LONGTEXT , tak:

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

Ale w tym przypadku nie będzie to właściwa droga.

Rozwiązanie

Sprawdź sql_mode na starym MariaDB RDS z 10.0:

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

A na nowym, z 10.2:

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

I spójrz na grupę Parametry który jest dołączony do nowego RDS:

Oto, czego potrzebujemy tutaj — STRICT_TRANS_TABLES :

Jeśli nie można wstawić wartości podanej w tabeli transakcyjnej, przerwij wyciąganie.

Teraz musisz zastąpić domyślny „”STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION „:” wartość na NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION :

Połącz się ponownie z konsolą MySQL i sprawdź ponownie:

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

Gotowe.

Podobne posty

  • 08.08.2019 AWS RDS:SQLSTATE[22001] — zbyt długie dane dla kolumny â MariaDB 10.2
  • 14.05.2019 AWS:MariaDB RDS – kill:Nie jesteś właścicielem wątku
  • 13.12.2016 AWS:RDS Aurora db.t2.medium vs t2.nano i MariaDB
  • 09.03.2016 AWS:migracja RTFM, część #2:dodatkowe informacje — AIM, S3, RDS i 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. Jak przeprowadzić migrację z Oracle DB do MariaDB

  2. Jak działa funkcja CONVERT_TZ() w MariaDB

  3. Co nowego w MariaDB Server 10.5?

  4. Jak działa DATE_ADD() w MariaDB

  5. MariaDB JSON_LENGTH() Objaśnienie