ホームページ  >  記事  >  バックエンド開発  >  移行後に Web サイトで「準備されたステートメントを再準備する必要があります」というエラーがスローされるのはなぜですか?

移行後に Web サイトで「準備されたステートメントを再準備する必要があります」というエラーがスローされるのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-27 08:49:301008ブラウズ

Why Does My Website Throw a

MySQL エラーのトラブルシューティング: 「準備されたステートメントを再準備する必要があります」

変更された PHP コードと MySQL ストアド プロシージャを含む Web サイトの移行時ローカル環境からホスティング サーバーに至るまで、永続的な致命的なエラー「'準備されたステートメントを再準備する必要があります'」がサイトの運用に影響を及ぼしています。

エラーの原因:

根本的な問題は、準備されたステートメントのキャッシュに影響を与える MySQL バグ #42041 に関連している可能性があります。ステートメントのキャッシュが不十分な場合、サーバーは再起動後に準備されたステートメントの再利用に失敗し、エラーが発生する可能性があります。

解決策:

解決策は、サーバーのキャッシュを調整することです。 table_definition_cache 変数。この変数は、定義がメモリにキャッシュされるテーブルの最大数を設定します。この値を増やすことで、より多くのプリペアド ステートメントをキャッシュできるようになり、エラーを解決できる可能性があります。

実装:

table_definition_cache の値を変更するには、次の手順に従います。

  1. MySQL Workbench などのツールまたはコマンド プロンプトを使用して MySQL サーバーにアクセスします。
  2. データベースに接続し、次のコマンドを実行して現在の値を確認します:
SHOW VARIABLES LIKE 'table_definition_cache';
  1. 次の構文を使用して、table_setting_cache のより高い値を設定します:
SET GLOBAL table_definition_cache = <new-value>;
  1. MySQL サーバーを再起動して、変更を適用します。

追加リソース:

準備されたステートメントのキャッシュの詳細については、MySQL の公式ドキュメントを参照してください:
https://dev.mysql.com/doc/refman/8.0 /en/statement-caching.html

以上が移行後に Web サイトで「準備されたステートメントを再準備する必要があります」というエラーがスローされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。