Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django Postgresql锁死锁_Django_Postgresql - Fatal编程技术网

Django Postgresql锁死锁

Django Postgresql锁死锁,django,postgresql,Django,Postgresql,我正在使用Django+Postgresql开发一个系统。这是我第一次使用postgresql,但我选择它是因为我需要事务和外键功能 在某个视图中,我必须使用AccessExclusiveLock锁定表,以防止在此视图中进行任何读写操作。这是因为我在保存/更新实体之前对整个数据进行了一些检查 我注意到一个不一致的错误时有发生。这是因为select语句直接发生在lock语句之后。它要求具有AccessShareLock。我在postgresql上读到AccessShareLock与AccessEx

我正在使用Django+Postgresql开发一个系统。这是我第一次使用postgresql,但我选择它是因为我需要事务和外键功能

在某个视图中,我必须使用AccessExclusiveLock锁定表,以防止在此视图中进行任何读写操作。这是因为我在保存/更新实体之前对整个数据进行了一些检查

我注意到一个不一致的错误时有发生。这是因为select语句直接发生在lock语句之后。它要求具有AccessShareLock。我在postgresql上读到AccessShareLock与AccessExclusiveLock冲突

我不明白的是为什么会发生这种事。如果postgresql已经有一个包含隐式锁的显式锁,为什么它会要求隐式锁呢?我不明白的第二件事是,为什么这个视图运行在两个不同的postregsql进程上?它们不是应该在一次交易中收集吗


Thanx。在PostgreSQL中,我建议您在会话中设置适当的事务隔离级别,而不是获取独占访问锁。因此,在运行“更新”之前,请向数据库发送以下命令:

begin;
set transaction isolation level repeatable read;
-- your SQL commands here
commit;

根据您的描述,您需要可重复读取隔离级别。

您能否提供导致此问题的示例?例如一个工作示例。有点OT:不要使用“developer.postgresql.org”上的文档-下一个尚未发布的Postgres版本有这些文档。@StarShip3000我恐怕不能。专有垃圾。Psuedo代码或工作代码示例,它模仿您的代码而不使用专有垃圾。我想鉴于此,我无法使用Django ORM设置事务隔离级别。