>  기사  >  데이터 베이스  >  내 Python 웹 앱이 삭제 및 삽입에도 불구하고 MySQL에서 오래된 세션 데이터를 가져오는 이유는 무엇입니까?

내 Python 웹 앱이 삭제 및 삽입에도 불구하고 MySQL에서 오래된 세션 데이터를 가져오는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-23 09:40:42204검색

Why Does My Python Web App Get Stale Session Data from MySQL Despite Deletion and Insertion?

MySQL 데이터베이스의 캐싱 문제: 삭제 및 삽입 후 오래된 데이터 검색

Python 웹 애플리케이션에서 사용자 세션 관리는 중요한 작업입니다. 그러나 MySQL 연결을 사용하는 특정 구현에서는 이전 세션을 삭제하고 새 세션을 생성했음에도 불구하고 일부 연결이 후속 데이터베이스 선택 중에 오래된 데이터를 검색하는 문제가 발생합니다. 이로 인해 세션 유효성 검사가 실패하고 사용자가 다시 로그인해야 합니다.

근본 원인

이 문제의 근본 원인은 MySQL의 기본 격리 수준인 " 반복해서 읽을 수 있습니다." 이 설정을 사용하면 해당 변경 사항이 커밋되었는지 여부에 관계없이 트랜잭션이 시작된 후 다른 연결에서 변경한 내용과 트랜잭션 내의 연결이 격리됩니다.

해결책

이 문제를 해결하려면 두 가지 주요 접근 방식이 있습니다.

  1. 종료 트랜잭션:

    • 영향을 받은 세션에서 COMMIT 또는 ROLLBACK 문을 실행합니다. 이렇게 하면 "REPEATABLE READ" 트랜잭션이 종료되고 연결이 업데이트된 데이터에 액세스할 수 있습니다.
  2. 격리 수준 변경:

    • 영향을 받은 세션의 격리 수준을 "READ COMMITTED"로 수정합니다. 이렇게 하면 세션이 이미 커밋된 데이터를 읽도록 하여 오래된 데이터 검색 문제를 해결합니다.
    • 또는 향후 발생을 방지하기 위해 기본 격리 수준을 전체적으로 "READ COMMITTED"로 설정하는 것이 좋습니다. 이 접근 방식에 대한 자세한 내용은 MySQL 설명서를 참조하세요.

위 내용은 내 Python 웹 앱이 삭제 및 삽입에도 불구하고 MySQL에서 오래된 세션 데이터를 가져오는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.