ERP Cloud Systems - الحد الأقصى لعدد الحقول في النموذج
الحد الأقصى لعدد الحقول في النموذج
أحيانًا أثناء إنشاء الحقول المخصصة، قد تواجه رسالة خطأ تبدو مثل هذه:
Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs.
ماذا يعني ؟
ببساطة، يعني أنك قد وصلت إلى الحد الأقصى لعدد الحقول في النموذج/ المستند المحدد. فما هو الحد الأقصى لعدد الحقول؟
في MySQL، يوجد حد يبلغ 4096 عمودًا لكل جدول، ولكن الحد الفعلي قد يكون أقل لجدول معين. يعتمد الحد الدقيق على عدة عوامل متفاعلة.
كل جدول (بغض النظر عن محرك التخزين) له حد أقصى لحجم الصف يبلغ 65,535 بايت. قد يضع محرك التخزين قيودًا إضافية على هذا الحد، مما يقلل من حجم الصف الفعلي.
يحد حجم الصف الأقصى من عدد (وربما حجم) الأعمدة لأن الطول الإجمالي لجميع الأعمدة لا يمكن أن يتجاوز هذا الحجم (65,535 بايت). على سبيل المثال، تتطلب أحرف utf8mb3
ما يصل إلى 3 بايت لكل حرف، لذا بالنسبة لعمود VARCHAR(140)
، يجب علي الخادم تخصيص140 × 3 = 420
بايت لكل قيمة. وبالتالي، لا يمكن للجدول أن يحتوي على أكثر من 65,535 / 420 = 156 عمودًا من هذا النوع.
في إطار عمل Frappe، يتم إنشاء أعمدة من نوع VARCHAR(140)
استنادًا إلى أنواع الحقول مثل "بيانات"، "ربط"، "اختيار"، "ربط ديناميكي"، "رقم سري"، و"للقراءة فقط". وبالتالي، يمكنك إنشاء حوالي 156 عمودًا من هذا النوع في النظام.
الحل:
لإضافة المزيد من الحقول إلى النظام، يمكنك إجراء بعض التعديلات:
- تحويل بعض الحقول إلى أنواع "Text"، "Small Text"، "Text Editor" أو "Code". في MySQL، يتم احتساب الأعمدة من نوع BLOB و TEXT من بايت واحد إلى أربعة زائد ثمانية بايتات لكل منها تجاه حد حجم الصف لأن محتوياتها يتم تخزينها بشكل منفصل عن باقي الصف. لذلك، سيؤدي التحويل إلى هذه الأنواع من الحقول إلى توفير بعض المساحة، مما يسمح بإضافة المزيد من الحقول.
- تحديد قيمة أصغر في خاصية "الطول" عند إنشاء الحقول. القيمة الافتراضية هي 140. يقوم النظام بتحديد طول
VARCHAR
استنادًا إلى هذه الخاصية وتخصيص الحجم لتلك الأعمدة. وبالتالي، يؤدي تقليل الطول إلى السماح بإضافة المزيد من الحقول. - الحقول المخصصة لا تُحذف من قاعدة البيانات تلقائيًا. إذا كنت متأكدًا من أنك لا تحتاج إلى بيانات من أي من الحقول المخصصة، يمكنك تقليص الجدول باستخدام الأمر trim-tables