Tôi không thể tạo chỉ mục trên varchar(500)
."Khóa được chỉ định quá dài; độ dài khóa tối đa là 1000 byte"
MySQL: Specified key was too long; max key length is 1000 bytes
Tôi không thể tạo chỉ mục trên varchar(500)
."Khóa được chỉ định quá dài; độ dài khóa tối đa là 1000 byte"
MySQL: Specified key was too long; max key length is 1000 bytes
latin1 = 1 byte = 1 character
uft8 = 3 byte = 1 character
gbk = 2 byte = 1 character
Các ký tự không phải là utf-8 có độ dài thay đổi (1-4), tùy thuộc vào điểm mã unicode? – Svante
Số byte tối đa cần thiết cho một ký tự utf8 là 3 và MySQL phải tạo điều kiện cho tất cả các ký tự trong trường te là số byte tối đa. – Jrgns
Ngoại trừ số byte tối đa trên UTF-8 là 4 byte. MySQL đã đưa ra quyết định ngu ngốc, ngu ngốc, ngu ngốc, khủng khiếp này để làm cho utf8 chỉ hỗ trợ 3 byte. Bộ mã tương thích UTF-8 "thực" là utf8mb4, chỉ được hỗ trợ trên MySQL 5.6. –
Câu trả lời hoàn chỉnh cho câu hỏi này được đưa ra [ở đây] (http://stackoverflow.com/questions/1814532/1071-specified-key-was-too-long-max -key-length-is-767-byte/1814594 # 1814594). –
Đây là giải pháp ngắn gọn và hoạt động hoàn toàn 1 dòng: http://stackoverflow.com/questions/1814532/1071-specified-key-was-too-long-max-key-length-is-767-bytes/22873006#22873006 –