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 die Datenintegrität und Replikationskonsistenz sicherzustellen.
Korrekturen 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 können Sie Folgendes zu Ihrer MySQL-Konfigurationsdatei hinzufügen (z. B. mysql.ini):
log_bin_trust_function_creators = 1;
Durch Aktivieren dieser Einstellung können Funktionen ohne explizite Deklarationen während der binären Protokollierung ausgeführt werden.
Fügen Sie der Funktion oder Prozedur die entsprechende Deklaration hinzu:
Für Funktionen, die immer die gleiche Ausgabe für die gleichen Eingabeparameter erzeugen, verwenden Sie 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 Sie 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ührt Ergebnisse für die gleichen Eingabeparameter. 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.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3