Apabila mengimport pangkalan data MySQL, anda mungkin menghadapi ralat "1418 (HY000) pada baris 10185: Fungsi ini tidak mempunyai DETERMINISTIC, NO SQL, atau READS SQL DATA dalam pengisytiharannya dan pengelogan binari didayakan (anda mungkin mahu menggunakan pembolehubah log_bin_trust_function_creators yang kurang selamat)." Ralat ini berlaku apabila anda tidak menentukan sifat deterministik fungsi dalam pangkalan data.
Untuk menyelesaikan ralat ini, anda boleh menggunakan salah satu daripada dua kaedah:
Kaedah 1: Buat sementara waktu Lumpuhkan Pengelogan Binari
SET GLOBAL log_bin_trust_function_creators = 1;
Kaedah 2: Konfigurasikan Fail mysql.ini
log_bin_trust_function_creators = 1;
Dengan menetapkan nilai ini kepada 1, anda sedang melonggarkan menyemak fungsi bukan deterministik. Pilihan ini harus digunakan dengan berhati-hati kerana ia boleh menjejaskan integriti data anda.
Memahami Fungsi Deterministik
Untuk mengelakkan ralat ini pada masa hadapan, pendekatan yang lebih baik adalah menggunakan pengisytiharan deterministik untuk fungsi yang disimpan. Pengisytiharan ini memberitahu MySQL sama ada fungsi itu sentiasa menghasilkan hasil yang sama untuk parameter input yang sama. Berikut ialah pengisytiharan deterministik yang berbeza:
DETERMINISTIK:
TIDAK DETERMINISTIK:
MEMBACA DATA SQL:
TIADA SQL:
MENGANDUNGI SQL:
Memilih Perisytiharan yang Betul
Memilih yang betul pengisytiharan untuk sesuatu fungsi bergantung pada kelakuannya. Jika output fungsi bergantung pada faktor luar pangkalan data, seperti masa semasa atau penjana nombor rawak, ia harus diisytiharkan sebagai BUKAN DETERMINISTIK. Jika fungsi hanya membaca data, ia boleh diisytiharkan sebagai READS SQL DATA. Jika fungsi tidak mengandungi sebarang pernyataan SQL, ia boleh diisytiharkan sebagai NO SQL.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan \'1418 (HY000) Fungsi ini tidak mempunyai DETERMINISTIC, NO SQL, atau READS SQL DATA dalam pengisytiharannya dan pengelogan binari didayakan\' Ralat dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!