"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية حل \"1418 (HY000) هذه الوظيفة لا تحتوي على أي من البيانات المحددة أو SQL أو READS SQL في إعلانها وتم تمكين التسجيل الثنائي\" خطأ في MySQL؟

كيفية حل \"1418 (HY000) هذه الوظيفة لا تحتوي على أي من البيانات المحددة أو SQL أو READS SQL في إعلانها وتم تمكين التسجيل الثنائي\" خطأ في MySQL؟

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

How to Solve the \

عند استيراد قاعدة بيانات MySQL، قد تواجه الخطأ "1418 (HY000) في السطر 10185: لا تحتوي هذه الوظيفة على أي من البيانات المحددة أو NO SQL أو READS SQL DATA في إعلانها و تم تمكين التسجيل الثنائي (قد ترغب في استخدام متغير log_bin_trust_function_creators الأقل أمانًا)." يحدث هذا الخطأ عندما لم تقم بتحديد الطبيعة الحتمية لوظيفة داخل قاعدة البيانات.

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

الطريقة الأولى: مؤقتًا تعطيل التسجيل الثنائي

SET GLOBAL log_bin_trust_function_creators = 1;

الطريقة 2: تكوين ملف mysql.ini

log_bin_trust_function_creators = 1;
log_bin_trust_function_creators = 1;
من خلال تعيين هذه القيمة على 1، فإنك تخفف من عملية التحقق من الوظائف غير الحتمية. يجب استخدام هذا الخيار بحذر لأنه قد يؤدي إلى تعريض سلامة بياناتك للخطر.

فهم الوظائف الحتمية

لتجنب هذا الخطأ في المستقبل، هناك نهج أفضل. هو استخدام الإعلانات الحتمية للوظائف المخزنة. تُعلم هذه الإعلانات MySQL ما إذا كانت الوظيفة تنتج دائمًا نفس النتيجة لنفس معلمات الإدخال. فيما يلي الإعلانات الحتمية المختلفة:

الحتمية:

الوظائف التي تنتج دائمًا نفس النتيجة لنفس معلمات الإدخال.

  • غير محددة:

وظائف لا تنتج دائمًا نفس النتيجة لنفس معلمات الإدخال. إذا لم يتم التصريح عنها بشكل صريح، فإن إعدادات MySQL الافتراضية هي NOT DETERMINISTIC.

  • قراءة بيانات SQL:

الوظائف التي تقرأ البيانات من قواعد البيانات فقط.

  • لا يوجد SQL:

الوظائف التي لا تحتوي على أي عبارات SQL.

    تحتوي على SQL:

الوظائف التي تحتوي على تعليمات SQL ولكنها لا تقرأ البيانات ولا تكتبها.

    اختيار الإعلان الصحيح
اختيار الصحيح يعتمد إعلان الوظيفة على سلوكها. إذا كان إخراج الدالة يعتمد على عوامل خارجية لقاعدة البيانات، مثل الوقت الحالي أو منشئ أرقام عشوائية، فيجب الإعلان عنها على أنها غير حتمية. إذا كانت الوظيفة تقرأ البيانات فقط، فيمكن تعريفها بأنها READS SQL DATA. إذا كانت الدالة لا تحتوي على أي عبارات SQL، فيمكن إعلانها على أنها NO SQL.

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

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

Copyright© 2022 湘ICP备2022001581号-3