Django models mysql中的Django事务隔离级别&;postgresql
您知道Django中使用的事务的默认隔离级别吗? 是否可以以独立于数据库的方式设置隔离级别Django models mysql中的Django事务隔离级别&;postgresql,django-models,isolation-level,Django Models,Isolation Level,您知道Django中使用的事务的默认隔离级别吗? 是否可以以独立于数据库的方式设置隔离级别 我主要对mysql和postgres感兴趣 mysql驱动程序不会更改隔离级别,因此它取决于服务器的默认隔离级别。目前django没有设置隔离级别。这是一个bug,因为django不能在比READ COMMITTED更高的隔离级别下正常工作。但是MySQL默认使用可重复读取。计划添加一个设置来设置隔离级别(),并讨论如何将readcommitted设置为默认值()。我还写了一篇关于的详细文章。您还可以使用
我主要对mysql和postgres感兴趣 mysql驱动程序不会更改隔离级别,因此它取决于服务器的默认隔离级别。目前django没有设置隔离级别。这是一个bug,因为django不能在比READ COMMITTED更高的隔离级别下正常工作。但是MySQL默认使用可重复读取。计划添加一个设置来设置隔离级别(),并讨论如何将readcommitted设置为默认值()。我还写了一篇关于的详细文章。您还可以使用django数据库选项对每个客户机/会话进行更改,如下所示:
DATABASE_OPTIONS = { "init_command": "SET storage_engine=INNODB, SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED", }
(对不起,我无法对丹希普发表评论)
这个解决方案为我所用(mySQL),我在数据库字段中添加了Peter的代码:
DATABASES = {
'default': {
(...)
'OPTIONS': {
(...),
"init_command": "SET storage_engine=INNODB, SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED"
},
}
}
如果要使用“读取未限制隔离级别” 在数据库连接配置中添加“隔离级别”:“读取未提交”选项
数据库={
“读取未限制”:{
“选项”:{
“隔离级别”:“读取未提交”
},
},
}
是否有人可以确认此操作是否正常运行?我对repeatable read有问题:@danihp肯定会运行,尽管语法是关闭的。我正在使用SET storage\u engine=INNODB;设置会话事务隔离级别READ COMMITED代码>代替谢谢,但是你链接到的博客似乎是私人的。你能打开那篇文章,或者复制/粘贴到这里吗?你能不能引用一些信息或详细说明“django不能在比READ COMMITTED更高的隔离级别下正常工作”@Sebastian Noack这篇文章说“需要权限”?我发现这篇文章引用了这篇私人文章,实际上有你可以阅读的内容:我相信这与Django如何模拟自动提交而不是使用数据库级自动提交有关。Django 1.6中已对此进行了修复: