ホームページ >データベース >mysql チュートリアル >バイナリ ロギングが有効になっていると MySQL が「DETERMINISTIC、NO SQL、または READS SQL DATA」エラーをスローするのはなぜですか?
エラー: バイナリ ロギングが有効になっている関数宣言に「DETERMINISTIC、NO SQL、または READS SQL DATA」がありません
データベースをインポートするときMySQL でエラー「1418 (HY000): この関数には DETERMINISTIC、NO SQL、または READS SQL DATA が宣言に含まれておらず、バイナリ ロギングが有効になっています」が発生した場合、問題の関数に適切な宣言が欠落していることを示します。
解決策:
この問題を解決するには 2 つの方法があります:
MySQL コンソール コマンドを実行します:
<code class="mysql">SET GLOBAL log_bin_trust_function_creators = 1;</code>
このコマンドは、非決定的関数のチェックを緩和し、インポートを続行できるようにします。
mysql.ini を構成します:
追加mysql.ini 設定ファイルに次の行を追加します。
log_bin_trust_function_creators = 1
説明:
バイナリ ログは、データベースに対して行われたすべての変更を記録します。デフォルトでは、MySQL では、データを変更する関数が正確にレプリケートされることを保証するために、宣言内で DETERMINISTIC、NO SQL、または READS SQL DATA として宣言される必要があります。
ストアド関数の決定的宣言:
これらの宣言は、関数の性質について MySQL に通知し、最適化とレプリケーションの決定を導きます。
注: バイナリ ログが無効になっている場合、log_bin_trust_function_creators 設定は適用されません。したがって、適切な決定論的宣言が指定されていることを確認することが重要です。
提供された解決策のいずれかを実装することで、エラーを解決し、データベースのインポートを続行できます。
以上がバイナリ ロギングが有効になっていると MySQL が「DETERMINISTIC、NO SQL、または READS SQL DATA」エラーをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。