MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

AWS RDS:“SQLSTATE[22001] – Data terlalu panjang untuk kolom” menggunakan MariaDB 10.2

Kami memiliki aplikasi PHP dengan AWS RDS MariaDB sebagai backend.

Pada versi 10.0 yang digunakan sebelumnya semuanya baik-baik saja, tetapi segera setelah kami meningkatkan ke MariaDB 10.2 – mendapat kesalahan selama pengujian:

PDOException:SQLSTATE[22001]:Data string, dipotong kanan:1406 Data terlalu panjang untuk kolom 'nama' pada baris 1 di /data/projects/projectname/vendor/yiisoft/yii2/db/Command.php:1290

Solusi pertama di sini bisa saja dengan mengubah jenis kolom dari VARCHAR ke LONGTEXT , seperti itu:

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

Namun dalam kasus saat ini, ini bukan cara yang benar.

Solusinya

Centang sql_mode pada MariaDB RDS lama dengan 10.0:

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

Dan yang baru, dengan 10.2:

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

Dan lihat Grup parameter yang dilampirkan ke RDS baru:

Inilah yang kita butuhkan di sini – STRICT_TRANS_TABLES :

Jika suatu nilai tidak dapat dimasukkan seperti yang diberikan ke dalam tabel transaksional, batalkan pernyataan tersebut.

Sekarang, perlu menimpa default “”STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION nilai “:” ke NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION :

Hubungkan kembali ke konsol MySQL, dan periksa lagi:

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

Selesai.

Pos serupa

  • 08/08/2019 AWS RDS:SQLSTATE[22001] – Data terlalu panjang untuk kolom MariaDB 10.2
  • 14/05/2019 AWS:MariaDB RDS – kill:Anda bukan pemilik utas
  • 13/12/2016 AWS:RDS Aurora db.t2.medium vs t2.nano MariaDB
  • 09/03/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. MariaDB di Tokyo

  2. Bagaimana RIGHT() Bekerja di MariaDB

  3. Bagaimana ATAN2() Bekerja di MariaDB

  4. Bagaimana IFNULL() Bekerja di MariaDB

  5. Kinerja Driver Konektor Java MariaDB