Rumah  >  Artikel  >  pangkalan data  >  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?

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?

Linda Hamilton
Linda Hamiltonasal
2024-11-01 10:44:30986semak imbas

How to Solve the

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:

  • Fungsi yang sentiasa menghasilkan hasil yang sama untuk parameter input yang sama.

TIDAK DETERMINISTIK:

  • Fungsi yang tidak selalu menghasilkan hasil yang sama untuk parameter input yang sama. Jika tidak diisytiharkan secara eksplisit, MySQL lalai kepada NOT DETERMINISTIC.

MEMBACA DATA SQL:

  • Fungsi yang hanya membaca data daripada pangkalan data.

TIADA SQL:

  • Fungsi yang tidak mengandungi sebarang pernyataan SQL.

MENGANDUNGI SQL:

  • Fungsi yang mengandungi arahan SQL tetapi tidak membaca atau menulis data.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn