DBAtlas · Atlas für Datenbankbetrieb

1418: Function has none of DETERMINISTIC, NO SQL, or READS SQL DATA (Binary Logging aktiviert)

MySQL

Was bedeutet das?

Eine Stored Function sollte angelegt werden, aber Binary Logging ist aktiviert und die Funktion ist mit keiner der Eigenschaften für Determinismus/Datenzugriff deklariert. MySQL lehnt eine solche Funktion ab, weil sie aus Sicht der Replikationssicherheit mehrdeutig ist.

Ursache

Die Funktion wurde ohne die Eigenschaften DETERMINISTIC, NO SQL oder READS SQL DATA definiert, während log_bin auf ON und log_bin_trust_function_creators=OFF steht. Ohne diese Eigenschaften kann MySQL nicht sicher sein, dass die Funktion auf der Replica dasselbe Ergebnis liefert.

Lösung

Deklariere das Verhalten der Funktion mit den richtigen Eigenschaften: Füge DETERMINISTIC hinzu, wenn sie wirklich deterministisch ist, NO SQL, wenn sie nicht auf Daten zugreift, READS SQL DATA, wenn sie nur liest. Bist du sicher, dass die Funktionen unbedenklich sind, kannst du log_bin_trust_function_creators=1 als zentrale Richtlinie setzen; am sichersten ist es jedoch, die Eigenschaft korrekt zu deklarieren. Stelle sicher, dass die Eigenschaft zum tatsächlichen Verhalten der Funktion passt.

In DBAtlas öffnen →

Weitere Einträge zu dieser Datenbank