1615: Prepared statement needs to be re-prepared(プリペアド文の再準備が必要)
MySQL意味
サーバー側のプリペアド文が、依存するメタデータ (テーブル/ビュー定義) の変更後に無効となったため、実行が拒否された。文を再度準備する必要がある。
原因
文の準備後に基になるテーブルに対する DDL (ALTER TABLE)、テーブルの再作成、メタデータキャッシュが満杯になりエントリが追い出された、または table_definition_cache/table_open_cache の上限が小さすぎる。DDL の多いシステムや一部の ORM/プールのシナリオでよく見られる。
対処方法
ほとんどのクライアントライブラリはこれを捕捉して自動的に文を再準備する。アプリケーションでは、このエラーを捕捉して prepare + execute を再試行する。頻繁に再発する場合は table_definition_cache と table_open_cache を増やす。アプリケーションのトラフィック中に不要な DDL を避ける。
同じデータベースの他の項目
- 1236Got fatal error 1236 from master when reading data from binary log(バイナリログの読み取り中にマスターから致命的エラー 1236)
- 1129Host 'host' is blocked because of many connection errors(接続エラーが多いためホスト 'host' がブロックされた)
- 1194Table 'name' is marked as crashed and should be repaired(テーブル 'name' がクラッシュとしてマークされ修復が必要)
- 1553Cannot drop index needed in a foreign key constraint(外部キー制約で必要なインデックスは削除できない)
- 3948Loading local data is disabled; this must be enabled on both the client and server sides(ローカルデータの読込みは無効。クライアントとサーバーの両側で有効化が必要)
- 1075Incorrect table definition; there can be only one auto column and it must be defined as a key(不正なテーブル定義。自動採番列は 1 つのみでキーとして定義が必要)
- 1055Expression not in GROUP BY (only_full_group_by)(GROUP BY にない式)