Django에서 사용되는 트랜잭션의 기본 격리 수준을 알고 있습니까? 데이터베이스 독립적 인 방법으로 격리 수준을 설정할 수 있습니까?MySQL과 PostgreSQL의 Django 트랜잭션 격리 수준
저는 주로 mysql과 postgres에 관심이 있습니다.
Django에서 사용되는 트랜잭션의 기본 격리 수준을 알고 있습니까? 데이터베이스 독립적 인 방법으로 격리 수준을 설정할 수 있습니까?MySQL과 PostgreSQL의 Django 트랜잭션 격리 수준
저는 주로 mysql과 postgres에 관심이 있습니다.
격리 수준은 mysql 드라이버에 의해 변경되지 않으므로 서버의 기본 격리 수준에 따라 다릅니다.
현재 django는 격리 수준을 설정하지 않습니다. django가 READ COMMITTED보다 높은 격리 수준에서 제대로 작동하지 않기 때문에 이것은 버그입니다. 그러나 MySQL은 기본적으로 REPEATABLE READ를 사용하고 있습니다. 격리 수준 (#14026)을 설정하는 설정을 추가하고 READ COMMITTED를 기본값 (#13906)으로 설정하는 방법에 대한 설명이 있습니다. 또한 MySQL transactions and django에 대한 자세한 기사를 작성했습니다.
또한이 같은 장고 데이터베이스 옵션을 사용하여 클라이언트/세션 당이를 변경할 수 있습니다
DATABASE_OPTIONS = { "init_command": "SET storage_engine=INNODB, SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED", }
누군가가 이것을 실행했는지 확인할 수 있습니까? 반복 가능한 읽기 문제가 있습니다. http://stackoverflow.com/questions/2235318/how-do-i-deal-with-this-race-condition-in-django – danihp
@danihp이 (가) 실행되지만 구문은 off입니다. . 나는'SET storage_engine = INNODB;를 사용하고있다. 세션 분리 격리 수준을 설정하십시오. '대신 – soulseekah
(미안 해요, 난 Danhip에 대해 말씀 드릴 수 없습니다) 이 솔루션은 나를 위해 wotked (MySQL의) 나는 데이터베이스 필드에 Peter의 코드를 추가했습니다.
DATABASES = {
'default': {
(...)
'OPTIONS': {
(...),
"init_command": "SET storage_engine=INNODB, SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED"
},
}
}
감사합니다. 그러나 링크 된 블로그는 비공개로 보입니다. 이 기사를 열거 나 여기에 복사/붙여 넣기를 할 수 있습니까? – Evgeny
일부 정보를 인용하거나 "Django가 READ COMMITTED보다 높은 격리 수준에서 제대로 작동하지 않습니다"에 대해 자세히 설명 할 수 있습니까? – Evgeny
@Sebastian Noack 기사에 '권한 필요'가 표시됩니까? –