Odpowiedzi:
Ta zmienna kontroluje, czy rejestrowanie binarne powinno ufać twórcom funkcji przechowywanych, że nie będą tworzyć funkcji przechowywanych, które spowodują niebezpieczne zdarzenia. Na przykład. posiadające funkcje UUID.
Zostało to dobrze wyjaśnione w dokumentacji:
Podczas tworzenia funkcji składowanej należy zadeklarować, że jest ona deterministyczna lub nie modyfikuje danych. W przeciwnym razie odzyskiwanie lub replikacja danych może być niebezpieczne.
Domyślnie, aby zaakceptować instrukcję CREATE FUNCTION, co najmniej jedno z DETERMINISTIC, NO SQL lub READS SQL DATA musi być wyraźnie określone. W przeciwnym razie wystąpi błąd:
ERROR 1418 (HY000): 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)
Aby złagodzić powyższe warunki tworzenia funkcji (że musisz mieć uprawnienie SUPER i że funkcja musi być zadeklarowana jako deterministyczna lub aby nie modyfikować danych), ustaw globalną zmienną systemową log_bin_trust_function_creators na 1.
Odwołanie: dokumentacja mysql (przeczytaj to, jak to wyjaśnia na przykładzie).
O drugie pytanie, czy jest dynamiczne i czy zmieni się po ponownym uruchomieniu serwera:
Tak, jest to zmienna dynamiczna.
Zmienna zmieni się po ponownym uruchomieniu, jeśli nie zaktualizujesz konfiguracji, aby odzwierciedlić zmianę.
Odniesienie: mysql-dokumentacja-znowu
mysql> select if(1 is true,'TRUE','FALSE')\G *************************** 1. row *************************** if(1 is true,'TRUE','FALSE'): TRUE