昨夜、mySQL データベースのストアド プロシージャにパラメータを追加しました。私はそれにアクセスし、パラメーターを台無しにし、テストのためにパラメーターを再度削除することにしました。パラメータを指定せずにプロシージャを再作成してから数分経っても、コマンド オブジェクトはまだパラメータの欠落について不平を言っていました。これは mySQL、MySQL/Connector、ADO、または Enterprise ライブラリのせいですか?どうすればよいですか?
1 に答える
デフォルトでは、MySQL はクエリをストアド プロシージャにキャッシュします。クエリ キャッシュが有効になっているかどうかを確認します。
SHOW VARIABLES LIKE 'query_cache%'
ストアド プロシージャ コールは MySQL によってキャッシュされませんが、query_cache_type
ON の場合、プロシージャ内から発行されたクエリのキャッシュに影響します。MySQL が数分間同じ結果を返す可能性があります。更新したプロシージャが以前の結果セットを返し続ける場合は、キャッシュをフラッシュするか、クエリ キャッシュをリセットしてすべてのクエリを削除することをお勧めします。
RESET QUERY CACHE
これにより、MySQL サーバーによるキャッシュが排除されます。
次回これが発生した場合は、MySQL/Connector または Enterprise Library を使用しない別のツールを使用して、手動で手順を実行できます。これにより、古い結果セットが MySQL によってキャッシュされているか、アプリケーションのドライバーとアプリケーション ブロックによってキャッシュされているかがわかります。
編集: Desertwebdesign による以下のコメントをお読みください。sproc を再作成したら、接続をドロップします。接続プーリングは接続を開いたままにする可能性があるため、MySQL から接続を切断するのがおそらく最善です。ほとんどのクエリ ブラウザには、プロセス/スーパー権限でログインした場合に MySQL で接続を切断できるタブがあります。
SHOW FULL PROCESSLIST
KILL CONNECTION thread_id