Độ dài khóa tối đa trong MySQL là bao nhiêu?

Độ dài tối đa của trường được lập chỉ mục mà công cụ lưu trữ InnoDB có thể sử dụng là 767 byte. Nếu bạn tạo chỉ mục trên trường nhiều byte hoặc nhiều trường thì có thể báo lỗi này

Lưu ý Ví dụ: bộ ký tự bốn byte utf8mb4 được sử dụng. Độ dài mặc định của trường được lập chỉ mục cho phép bởi bộ ký tự utf8mb4 là 191 ký tự dựa trên công thức sau. 767 byte/4 byte cho mỗi ký tự ≈ 191 ký tự. Nếu bạn tạo chỉ mục cho trường thuộc loại varchar (255) hoặc char (255), việc tạo chỉ mục không thành công. Để biết thêm thông tin, hãy xem tài liệu về MySQL tại trang web chính thức của MySQL

Các giải pháp

Sau khi bạn thay đổi giá trị của innodb_large_prefix thành BẬT, độ dài tối đa của trường được lập chỉ mục mà InnoDB có thể sử dụng ở định dạng hàng NĂNG ĐỘNG hoặc NÉN tăng lên 3.072 byte

Lưu ý innodb_large_prefix đã bị xóa khỏi MySQL 8. 0. Nếu phiên bản RDS của bạn chạy MySQL 8. 0, bạn có thể thay đổi giá trị của Row_format cho bảng. Để biết thêm thông tin, xem Bước 3

Sự cố này đang xảy ra trên một trong các máy chủ prod của chúng tôi (trước đây nó là mysql độc lập và sau đó được chuyển sang percona, nhưng sự cố đã xuất hiện trong cả hai phiên bản), nhưng sự cố này hoạt động tốt trên môi trường nhà phát triển của chúng tôi

Vì vậy, có cách nào để chúng tôi có thể cập nhật độ dài chỉ mục của môi trường prod hoặc thứ gì đó để nó không gây ra lỗi này không?

Khi khôi phục cơ sở dữ liệu MySQL, tôi gặp lỗi “Khóa được chỉ định quá dài;

1

2

3

người dùng@máy chủ [~]$ mysql new_db

Chủ đề