"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا يظهر لي الخطأ \"DETERMINISTIC، NO SQL، أو READS SQL DATA\" في MySQL؟

لماذا يظهر لي الخطأ \"DETERMINISTIC، NO SQL، أو READS SQL DATA\" في MySQL؟

تم النشر بتاريخ 2024-11-13
تصفح:407

Why Do I Get the \

فهم الخطأ: "DETERMINISTIC، NO SQL، or READS SQL DATA" متطلبات الإعلان

عند استيراد قاعدة بيانات إلى MySQL، يكون ذلك ممكنًا لمواجهة الخطأ التالي:

1418 (HY000) at line 10185: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable)

يشير هذا الخطأ إلى أن وظيفة محددة أو إجراء مخزن يفتقر إلى أحد الإجراءات التالية الإعلانات في تعريفها:

  • حتمية
  • NO SQL
  • يقرأ SQL البيانات

عند تمكين التسجيل الثنائي في MySQL، تكون هذه الإعلانات مطلوبة لضمان تكامل البيانات واتساق النسخ المتماثل.

إصلاحات الخطأ

] &&&]لحل هذه المشكلة، يمكنك استخدام إحدى الطريقتين:

  1. تمكين log_bin_trust_function_creators المتغير:

      في وحدة تحكم MySQL، قم بتنفيذ الأمر التالي:
    • SET GLOBAL log_bin_trust_function_creators = 1؛

      SET GLOBAL log_bin_trust_function_creators = 1;
    • ]بدلاً من ذلك، قم بإضافة ما يلي إلى ملف تكوين MySQL الخاص بك (على سبيل المثال، mysql.ini):
    • log_bin_trust_function_creators = 1;

      log_bin_trust_function_creators = 1;
    • يسمح تمكين هذا الإعداد بتنفيذ الوظائف بدون إعلانات صريحة أثناء التسجيل الثنائي.

  2. إضافة الإقرار المناسب إلى الدالة أو الإجراء:

      بالنسبة للوظائف التي تنتج دائمًا نفس الإخراج لنفس معلمات الإدخال، استخدم الإعلان الحتمي. على سبيل المثال:
    • إنشاء دالة my_function() DETERMINISTIC جسم - منطق وظيفتك نهاية

      log_bin_trust_function_creators = 1;
    • بالنسبة للوظائف التي لا تحتوي على أي عبارات SQL، استخدم إعلان NO SQL.
    • إنشاء وظيفة my_function() NO SQL جسم - منطق وظيفتك نهاية

      log_bin_trust_function_creators = 1;
    • بالنسبة للوظائف التي تقرأ البيانات من قاعدة البيانات فقط، استخدم إعلان READS SQL DATA.
    • إنشاء وظيفة my_function() READS SQL DATA جسم - منطق وظيفتك نهاية

      SET GLOBAL log_bin_trust_function_creators = 1;
    فهم إعلانات الوظائف الحتمية

يمكن للوظائف غير الحتمية تعديل البيانات أو استخدام مدخلات غير متوقعة، مما يؤدي إلى اختلافات نتائج لنفس معلمات الإدخال. على هذا النحو، من المهم الإعلان بدقة عن سلوك الوظيفة لتحسين الأداء وضمان سلامة البيانات. توفر وثائق MySQL دليلاً شاملاً لمختلف خيارات الإعلان عن الوظائف والإجراء المخزن، مما يسمح لك باتخاذ قرارات مستنيرة لكل منها. وظيفة. يمكن أن تؤثر الإعلانات الخاطئة على خطط التنفيذ وتؤثر على الأداء.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3