Ralat: "DETERMINISTIC, NO SQL, or READS SQL DATA" Hilang dalam Perisytiharan Fungsi dengan Pengelogan Binari Didayakan
Apabila mengimport pangkalan data dalam MySQL, menghadapi ralat "1418 (HY000): Fungsi ini tidak mempunyai DETERMINISTIC, NO SQL, atau READS SQL DATA dalam pengisytiharannya dan pengelogan binari didayakan" menunjukkan bahawa fungsi yang dipersoalkan tidak mempunyai pengisytiharan yang sesuai.
Penyelesaian:
Terdapat dua kaedah untuk menyelesaikan isu ini:
Melaksanakan Perintah Konsol MySQL:
<code class="mysql">SET GLOBAL log_bin_trust_function_creators = 1;</code>
Arahan ini melonggarkan semakan untuk fungsi bukan penentu, membenarkan import diteruskan.
Konfigurasikan mysql.ini:
Tambah baris berikut ke fail konfigurasi mysql.ini:
log_bin_trust_function_creators = 1
Penjelasan:
Pengelogan binari merekodkan semua pengubahsuaian yang dibuat pada pangkalan data. Secara lalai, MySQL memerlukan fungsi yang mengubah suai data untuk diisytiharkan sebagai DETERMINISTIC, NO SQL, atau READS SQL DATA dalam pengisytiharan mereka untuk memastikan ia boleh direplikasi dengan tepat.
Deterministic Declaration for Stored Functions:
Pengisytiharan ini memaklumkan MySQL tentang sifat fungsi, panduan pengoptimuman dan keputusan replikasi.
Nota: Jika pengelogan binari dilumpuhkan, tetapan log_bin_trust_function_creators tidak digunakan. Oleh itu, adalah penting untuk memastikan bahawa pengisytiharan deterministik yang sesuai ditentukan.
Dengan melaksanakan salah satu penyelesaian yang disediakan, anda boleh menyelesaikan ralat dan meneruskan import pangkalan data.
Atas ialah kandungan terperinci Mengapa MySQL Melemparkan Ralat \'DETERMINISTIC, NO SQL, or READS SQL DATA\' dengan Pengelogan Binari Didayakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!