เรามีวิศวกรบางคนที่แผ่โครงสร้างฐานข้อมูลให้เป็นมาตรฐานในตารางชั่วคราวเพื่อวัตถุประสงค์ในการสร้างรายงาน คอลัมน์มีการระบุไว้เป็นTEXT NOT NULL
(ฉันรู้ว่า "ทำไมพวกเขาถึงทำอย่างนั้น?" ขอแค่สมมติว่าเรากำลังพูดถึงเรื่องนี้)
เราใช้ MySQL 5.1.48 Community RHEL5 กับปลั๊กอิน InnoDB 1.0.9 บน Linux
เมื่อใช้ MyISAM เราไม่เคยพบข้อ จำกัด ขนาดตารางของคอลัมน์สูงสุดหรือความยาวแถวสูงสุด (ในระหว่างการตรวจสอบเราได้ จำกัด จำนวนคอลัมน์สูงสุดที่ 2598 (2599 ข้อผิดพลาดทำให้เกิดข้อผิดพลาด 1117) ด้วย InnoDB เรากำลังขีด จำกัด ขีด จำกัด เหล่านี้ ตาราง (ไม่มีการแทรกข้อมูล) เป็น:
ข้อผิดพลาด 1118 (42000) ที่บรรทัด 1: ขนาดแถวใหญ่เกินไป ขนาดแถวสูงสุดสำหรับประเภทตารางที่ใช้ไม่นับ BLOB คือ 8126 คุณต้องเปลี่ยนบางคอลัมน์เป็น TEXT หรือ BLOB
ฉันกำลังมองหาคำตอบต่อไปนี้:
สูตรรายละเอียดสำหรับการกำหนดขนาดอนุภาคแถวเมื่อใช้ล็อตของคอลัมน์ v / v / b / t คืออะไร? ฉันได้ลอง formuals ต่าง ๆ โดยใช้
varchar(N)
คอลัมน์ (โดยที่ N อยู่ระหว่าง 1 ถึง 512), UTF8 charset (* 3) และคอลัมน์ให้มากที่สุดเท่าที่ตารางจะใช้จนกว่าจะล้มเหลว ไม่มีคอมโบที่ฉันได้ลองให้ค่าที่ตรงกับผลการทดสอบจริงฉันต้องคำนึงถึงค่าใช้จ่ายอื่นใดเมื่อคำนวณขนาดแถว
ทำไมข้อความแสดงข้อผิดพลาดเปลี่ยนจาก 8126 ถึง 65535 เมื่อฉันไปจากการสร้างตารางที่มีคอลัมน์ varchar (109) เป็นคอลัมน์ varchar (110)