新しく作成した MySQL セッションがトランザクション後にすぐに表示されないのはなぜですか?

DDD
リリース: 2024-11-23 22:49:11
オリジナル
897 人が閲覧しました

Why Are My Newly Created MySQL Sessions Not Immediately Visible After a Transaction?

MySQL の挿入と削除後にキャッシュされた結果

Python/WSGI Web アプリでは、セッションはローカル MySQL の InnoDB テーブルに保存されますデータベース。認証後、古いセッションが削除され、新しいセッションが作成され、トランザクションがコミットされて Cookie の新しいセッション ID が作成されます。ただし、新しく作成されたセッションがリダイレクト後にデータベースで見つからない場合があります。

問題の理解

MySQL はデフォルトの分離レベル「REPEATABLE READ」を使用します。トランザクションには、トランザクション開始後に加えられた変更は反映されません。これらの変更はコミットされたとしても、非表示のままです。

解決策

これを解決するには、2 つのオプションがあります:

  1. 終了トランザクション:

    • キャッシュされた結果が表示されるセッションで COMMIT または ROLLBACK を発行します。これによりトランザクションが終了し、コミットされた変更が表示されるようになります。
  2. 分離レベルの変更:

    • セッションの分離レベルを「READ COMMITTED」に設定します。これにより、他のトランザクションによる変更がコミット後に確実に表示されるようになります。

追加の考慮事項

MySQL マニュアルを確認してください。デフォルトの分離レベルを変更するオプションについては、これにより、すべてのセッションが優先分離レベルを自動的に使用できるようになります。

以上が新しく作成した MySQL セッションがトランザクション後にすぐに表示されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート