2009-06-24 32 views
16

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

+1

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). –

+0

Đâ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 –

Trả lời

24
latin1 = 1 byte = 1 character 
uft8 = 3 byte = 1 character 
gbk = 2 byte = 1 character 
+4

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

+5

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

+0

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ác vấn đề liên quan