MySQL エラー: 「この関数の宣言には DETERMINISTIC、NO SQL、または READS SQL DATA が含まれておらず、バイナリ ログが有効になっています。」
データベースを MySQL にインポートしようとすると、関数の宣言に DETERMINISTIC、NO SQL、または READS SQL DATA のいずれかの宣言が欠落していることを示すエラーが発生する場合があります。このエラーは、バイナリ ログがアクティブ化されている場合に発生します。
エラーの解決:
このエラーは 2 つの方法で対処できます:
MySQL コンソールの構成: MySQL コンソールで次のコマンドを実行します:
SET GLOBAL log_bin_trust_function_creators = 1;
構成ファイルの編集: 次の行を追加しますmysql.ini 設定ファイルへの追加:
log_bin_trust_function_creators = 1;
これらの変更により、非決定的関数をバイナリ ロギングで使用できるようになります。ただし、バイナリ ログが無効になっている場合、これらの設定はエラーに影響しません。
関数宣言について:
関数には非決定的な命令が含まれていることに注意することが重要です。 NOW() や UUID() などは NOT DETERMINISTIC として宣言する必要があります。さらに、複製されていないスキーマからデータを読み取る関数も非決定的です。
ベスト プラクティス:
理想的なアプローチは、ストアド関数の決定的宣言を理解して利用することです。これらはレプリケーションの最適化に役立つためです。 MySQL では、潜在的なエラーを回避するために、ストアド関数の定義で前述の宣言のいずれかを明示的に指定することをお勧めします。
以上がバイナリ ロギングが有効になっている場合、MySQL が決定論的関数に関するエラーをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。