Den Fehler verstehen: Deklarationsanforderung „DETERMINISTISCH, KEIN SQL oder LEST SQL-DATEN“
Beim Importieren einer Datenbank in MySQL ist dies möglich um auf den folgenden Fehler zu stoßen:
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)
Dieser Fehler weist darauf hin, dass einer definierten Funktion oder gespeicherten Prozedur eine der folgenden Deklarationen in ihrer Definition fehlt:
Wenn die Binärprotokollierung in MySQL aktiviert ist, sind diese Deklarationen erforderlich, um Datenintegrität und Replikationskonsistenz sicherzustellen.
Fehlerbehebungen für den Fehler
Um dieses Problem zu beheben, können Sie eine von zwei Methoden verwenden:
Aktivieren Sie die Variable log_bin_trust_function_creators:
Führen Sie in der MySQL-Konsole den folgenden Befehl aus:
SET GLOBAL log_bin_trust_function_creators = 1;
Alternativ fügen Sie Folgendes zu Ihrer MySQL-Konfigurationsdatei hinzu (z. B. mysql .ini):
log_bin_trust_function_creators = 1;
Durch die Aktivierung dieser Einstellung können Funktionen ohne explizite Deklarationen während der binären Protokollierung ausgeführt werden.
Hinzufügen die entsprechende Deklaration für die Funktion oder Prozedur:
Verwenden Sie für Funktionen, die immer die gleiche Ausgabe für die gleichen Eingabeparameter erzeugen, die DETERMINISTIC-Deklaration. Zum Beispiel:
CREATE FUNCTION my_function() DETERMINISTIC BODY -- Your function logic END
Für Funktionen, die keine SQL-Anweisungen enthalten, verwenden Sie die NO SQL-Deklaration.
CREATE FUNCTION my_function() NO SQL BODY -- Your function logic END
Für Funktionen, die nur Daten aus der Datenbank lesen, verwenden die READS SQL DATA-Deklaration.
CREATE FUNCTION my_function() READS SQL DATA BODY -- Your function logic END
Deterministische Funktionsdeklarationen verstehen
Nicht deterministische Funktionen können Daten ändern oder unvorhersehbare Eingaben verwenden, was zu unterschiedlichen Ergebnissen für dieselben Eingabeparameter führt. Daher ist es wichtig, das Funktionsverhalten genau zu deklarieren, um die Leistung zu optimieren und die Datenintegrität sicherzustellen.
Die MySQL-Dokumentation bietet eine umfassende Anleitung zu den verschiedenen Deklarationsoptionen für Funktionen und gespeicherte Prozeduren, sodass Sie für jede davon fundierte Entscheidungen treffen können Funktion. Falscherklärungen können sich auf Ausführungspläne auswirken und die Leistung beeinträchtigen.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich in MySQL den Fehler „DETERMINISTISCH, KEIN SQL oder LEST SQL-DATEN'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!