Bạn không phải lo lắng về thông báo nvarchar, được tạo bởi phpmyadmin, không phải bởi MySQL. MySQL không cho phép kiểu dữ liệu nvarchar, hãy xem hướng dẫn sử dụng MySQL trên dữ liệu quốc gia bộ ký tự :
SQL tiêu chuẩn định nghĩa NCHAR hoặc NATIONAL CHAR như một cách để chỉ ra rằng một cột CHAR nên sử dụng một số bộ ký tự được xác định trước. MySQL sử dụngutf8 làm bộ ký tự được xác định trước này. Ví dụ:các khai báo kiểu dữ liệu này tương đương nhau:
CHAR (10), BỘ NHÂN VẬT utf8 NHÂN VẬT QUỐC GIA (10), NCHAR (10)
Như sau:
VARCHAR (10), BỘ NHÂN VẬT utf8 QUỐC GIA VARCHAR (10), NVARCHAR (10), NCHAR VARCHAR (10), TỔNG HỢP NHÂN VẬT QUỐC GIA (10), TỔNG HỢP NHÂN VẬT QUỐC GIA (10)
Vấn đề thực sự nằm ở cuối thông báo lỗi:kích thước hàng quá lớn. Thông báo lỗi này đến từ MySQL và đó là lỗi bạn cần giải quyết.
mysql sử dụng bộ ký tự utf8 cho kiểu dữ liệu nvarchar. Một ký tự utf8 trong mysql sử dụng tối đa 3 byte. config_data
của bạn trường được định nghĩa là nvarchar(21844)
, do đó nó yêu cầu tối đa 21844 * 3 + 2 =65534 byte.
Như thông báo lỗi cho biết, một hàng có thể dài tới 65535 byte, vì vậy bạn còn lại 1 byte, nhưng các trường khác đẩy kích thước hàng lên trên giới hạn.
Bạn có thể làm gì:
- Giảm
config_data
chiều dài của trường để chiều dài tổng thể của hàng phù hợp với giới hạn. - Thay đổi
config_data
kiểu dữ liệu thành varchar và sử dụng bộ ký tự yêu cầu ít byte hơn - chỉ cần đảm bảo rằng bộ ký tự đó hỗ trợ tất cả các ký tự bạn cần. - Thay đổi
config_data
kiểu dữ liệu thànhtext
bởi vì chỉ một phần nhỏ giá trị của trường văn bản thực sự được lưu trữ trong chính hàng đó. Điều này thực sự được đề xuất trong chính thông báo lỗi.