MySQL 5.1.25
        の時点では、準備済みステートメントによって参照されるテーブルまたはビューへのメタデータ変更が検出され、それによって、次回の実行時にそのステートメントの自動再準備が実行されます。これは、PREPARE
        ステートメントを使用して SQL
        レベルで処理される準備済みステートメントと、mysql_stmt_prepare()
        C API
        関数を使用してバイナリのクライアントサーバープロトコルで処理される準備済みステートメントに適用されます。
      
        メタデータ変更は、テーブルの作成、削除、変更、名前の変更、または切り詰めや、テーブルの解析、最適化、または修復などを実行する
        DDL
        ステートメントで発生します。再準備はまた、参照されたテーブルまたはビューが、キャッシュ内に新しいエントリの領域を確保するために暗黙的に、または
        FLUSH
        TABLES
        のために明示的にテーブル定義キャッシュからフラッシュされたあとにも発生します。
      
再準備は自動的に実行されますが、発生の程度に応じて、準備済みステートメントのパフォーマンスは低下します。
ステートメントが再準備される場合は、元の準備で有効であったデフォルトデータベースと SQL モードが使用されます。
        テーブルコンテンツの変更
        (たとえば、INSERT
        または UPDATE
        による) では再準備は発生せず、また
        SELECT
        ステートメントでも発生しません。
      
        以前のバージョンの MySQL
        との非互換性として、準備済みステートメントによって、ある実行と次の実行で異なるカラムセットまたは異なるカラム型が返される可能性があるという点があります。たとえば、準備済みステートメントが
        SELECT * FROM t1
        の場合、異なるカラム数を含むように
        t1
        を変更すると、次の実行では前の実行とは異なるカラム数が返されます。
      
旧バージョンのクライアントライブラリでは、この動作の変更を処理できません。自動再準備を実行するサーバーで準備済みステートメントを使用するアプリケーションの場合は、新しいクライアントライブラリにアップグレードすることを強くお勧めします。
        Com_stmt_reprepare
        ステータス変数は、再準備の数を追跡します。
      

