Chúng tôi có một số kỹ sư làm phẳng cấu trúc db được chuẩn hóa thành một bảng tạm thời cho mục đích tạo báo cáo. Các cột được chỉ định là TEXT NOT NULL
(Tôi biết "tại sao họ làm điều đó?"; Hãy giả sử rằng chúng tôi đang giải quyết vấn đề này).
Chúng tôi sử dụng MySQL 5.1.48 Community RHEL5 với trình cắm InnoDB 1.0.9 trên Linux.
Khi sử dụng MyISAM, chúng tôi không bao giờ gặp phải giới hạn kích thước bảng của cột tối đa hoặc chiều dài hàng tối đa (trong quá trình điều tra, chúng tôi đã đạt giới hạn cột tối đa ở 2598 (2599 gây ra lỗi 1117). Với InnoDB, chúng tôi đang đạt giới hạn. bảng (không chèn dữ liệu) như:
LRI 1118 (42000) ở dòng 1: Kích thước hàng quá lớn. Kích thước hàng tối đa cho loại bảng đã sử dụng, không tính BLOB, là 8126. Bạn phải thay đổi một số cột thành văn bản hoặc BLOB
Tôi đang tìm kiếm câu trả lời cho những điều sau đây:
Công thức chi tiết để xác định hạt kích thước hàng khi sử dụng nhiều cột v / v / b / t là gì? Tôi đã thử một vài công thức khác nhau bằng cách sử dụng
varchar(N)
các cột (trong đó N nằm trong khoảng từ 1 đến 512), bộ ký tự UTF8 (* 3) và nhiều cột như bảng sẽ mất cho đến khi thất bại. Không có combo nào tôi đã thử đưa ra các giá trị khớp với kết quả thử nghiệm thực tế.Tôi phải xem xét "chi phí chung" nào khác khi tính toán kích thước hàng?
Tại sao thông báo lỗi thay đổi từ 8126 thành 65535 khi tôi chuyển từ việc tạo bảng có cột varchar (109) sang cột varchar (110)?