バイナリ ロギングが有効になっている関数宣言での DETERMINISTIC、NO SQL、または READS SQL DATA
データベースを MySQL にインポートしようとすると、関数の宣言に次の宣言のいずれかが欠落しており、バイナリ ロギングが有効であることを示すエラー メッセージが表示される場合があります:
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)
問題の解決
次の 2 つがあります。これを解決するメソッド:
SET GLOBAL log_bin_trust_function_creators = 1;
log_bin_trust_function_creators = 1;
これにより、データを変更する関数である非決定的関数のチェックが緩和されます。
決定的宣言について
決定的関数非決定的関数は同じ入力パラメーターに対して常に同じ結果を生成しますが、そうではありません。 MySQL は、レプリケーションの最適化中にこれらの宣言を使用します。
決定的宣言のタイプ
いくつかのタイプの決定的宣言が使用できます。
ベスト プラクティス
ストアド関数には決定論的な宣言を適切に指定することをお勧めします。最適なレプリケーションとデータの整合性を保証する機能。関数の性質を慎重に検討し、適切な宣言を使用することで、エラーを防止し、データベースのパフォーマンスを最適化できます。
以上がMySQL 関数が確定的宣言に関して「1418 (HY000)」エラーをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。