DETERMINISTIK, TIADA SQL, atau MEMBACA DATA SQL dalam Pengisytiharan Fungsi dengan Pengelogan Binari Didayakan
Semasa cuba mengimport pangkalan data ke dalam MySQL, mesej ralat yang menunjukkan bahawa fungsi tidak mempunyai salah satu daripada pengisytiharan berikut dalam pengisytiharannya dan pengelogan binari didayakan mungkin berlaku:
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)
Menyelesaikan Isu
Terdapat dua kaedah untuk menyelesaikannya:
SET GLOBAL log_bin_trust_function_creators = 1;
log_bin_trust_function_creators = 1;
Ini melonggarkan pemeriksaan untuk fungsi bukan penentu, iaitu fungsi yang mengubah suai data.
Memahami Perisytiharan Deterministik
Fungsi penentu sentiasa menghasilkan keputusan yang sama untuk parameter input yang sama, manakala fungsi bukan deterministik tidak. MySQL menggunakan pengisytiharan ini semasa pengoptimuman replikasi.
Jenis Pengisytiharan Deterministik
Beberapa jenis pengisytiharan deterministik tersedia:
Amalan Terbaik
Adalah disyorkan untuk menentukan pengisytiharan deterministik dengan betul untuk disimpan berfungsi untuk memastikan replikasi optimum dan integriti data. Dengan mempertimbangkan dengan teliti sifat fungsi dan menggunakan pengisytiharan yang sesuai, anda boleh mencegah ralat dan mengoptimumkan prestasi pangkalan data.
Atas ialah kandungan terperinci Mengapa Fungsi MySQL Saya Melemparkan Ralat \'1418 (HY000)\' Berkenaan Pengisytiharan Deterministik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!