MySQL-Fehler: „Diese Funktion enthält weder DETERMINISTISCH noch KEIN SQL oder liest SQL-Daten in ihrer Deklaration und die binäre Protokollierung ist aktiviert“
Beim Versuch, eine Datenbank in MySQL zu importieren, kann ein Fehler auftreten, der darauf hinweist, dass einer Funktion in ihrer Deklaration eine der folgenden Deklarationen fehlt: DETERMINISTISCH, KEIN SQL oder LESEN SQL-DATEN. Dieser Fehler tritt auf, wenn die binäre Protokollierung aktiviert ist.
Behebung des Fehlers:
Dieser Fehler kann auf zwei Arten behoben werden:
MySQL-Konsole konfigurieren:Führen Sie den folgenden Befehl in der MySQL-Konsole aus:
SET GLOBAL log_bin_trust_function_creators = 1;
Konfigurationsdatei bearbeiten:Fügen Sie die folgende Zeile hinzu zur mysql.ini-Konfigurationsdatei:
log_bin_trust_function_creators = 1;
Diese Änderungen ermöglichen die Verwendung nichtdeterministischer Funktionen mit binärer Protokollierung. Wenn die Binärprotokollierung jedoch deaktiviert ist, haben diese Einstellungen keinen Einfluss auf den Fehler.
Funktionsdeklarationen verstehen:
Es ist wichtig zu beachten, dass Funktionen, die nicht deterministische Anweisungen enthalten, wie NOW() oder UUID(), sollten als NICHT DETERMINISTISCH deklariert werden. Darüber hinaus sind auch Funktionen, die Daten aus einem nicht replizierten Schema lesen, nicht deterministisch.
Best Practices:
Der ideale Ansatz besteht darin, deterministische Deklarationen für gespeicherte Funktionen zu verstehen und zu nutzen da sie bei der Replikationsoptimierung helfen. MySQL empfiehlt, eine der genannten Deklarationen explizit in der Definition gespeicherter Funktionen anzugeben, um mögliche Fehler zu vermeiden.
Das obige ist der detaillierte Inhalt vonWarum gibt MySQL einen Fehler bezüglich deterministischer Funktionen aus, wenn die binäre Protokollierung aktiviert ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!