MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

AWS RDS:“SQLSTATE [22001] - Dữ liệu quá dài cho cột” sử dụng MariaDB 10.2

Chúng tôi có một ứng dụng PHP với AWS RDS MariaDB làm chương trình phụ trợ.

Trên phiên bản 10.0 được sử dụng trước đây, tất cả đều tốt, nhưng ngay sau khi chúng tôi nâng cấp lên MariaDB 10.2 - đã xảy ra lỗi trong quá trình kiểm tra:

PDOException:SQLSTATE [22001]:Dữ liệu chuỗi, bị cắt ngắn bên phải:1406 Dữ liệu quá dài cho cột ‘tên’ ở hàng 1 trong /data/projects/projectname/vendor/yiisoft/yii2/db/Command.php:1290

Giải pháp đầu tiên ở đây có thể là chỉ bằng cách thay đổi loại của cột từ VARCHAR tới LONGTEXT , như thế:

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

Nhưng trong trường hợp hiện tại, đây không phải là cách đúng đắn.

Giải pháp

Kiểm tra sql_mode trên MariaDB RDS cũ với 10.0:

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

Và trên cái mới, với 10.2:

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

Và xem xét Nhóm thông số được đính kèm với RDS mới:

Đây là những gì chúng ta cần ở đây - STRICT_TRANS_TABLES :

Nếu không thể chèn giá trị như đã cho vào bảng giao dịch, hãy hủy bỏ câu lệnh.

Bây giờ, cần ghi đè mặc định “” STRICT_TRANS_TABLES, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION “:” Thành giá trị NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION :

Kết nối lại với bảng điều khiển MySQL và kiểm tra lại:

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

Đã xong.

Bài đăng tương tự

  • 08/08/2019 AWS RDS:SQLSTATE [22001] - Dữ liệu quá dài cho cột в MariaDB 10.2
  • 14/05/2019 AWS:MariaDB RDS - kill:Bạn không phải là chủ sở hữu của chuỗi
  • 13/12/2016 AWS:RDS Aurora db.t2.medium so với 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. Cách thêm AM / PM vào giá trị thời gian hoặc ngày giờ trong MariaDB

  2. MariaDB LTRIM () so với LTRIM_ORACLE ():Sự khác biệt là gì?

  3. Cách REPLACE () hoạt động trong MariaDB

  4. Cách TIME_TO_SEC () hoạt động trong MariaDB

  5. Trình kết nối MariaDB / Python Beta hiện có sẵn