首页 > 数据库 >PostgreSQL - ERROR: deadlock detected

PostgreSQL - ERROR: deadlock detected

时间:2023-12-02 23:13:46浏览次数:30  
标签:PostgreSQL process detected accounts ERROR deadlock id SELECT

ERROR: deadlock detected
DETAIL: Process 209 waits for ShareLock on transaction 1034; blocked by process 201.
Process 201 waits for ShareLock on transaction 1035; blocked by process 209.
HINT: See server log for query details.
CONTEXT: while locking tuple (0,1) in relation "accounts"

 

 

The cause is the foreign key reference.

 

Solution 1:

Change

-- name: GetAccountForUpdate :one
SELECT * FROM accounts
WHERE id = $1 LIMIT 1
FOR UPDATE;

to

-- name: GetAccountForUpdate :one
SELECT * FROM accounts
WHERE id = $1 LIMIT 1
FOR NO KEY UPDATE;

 

Solution 2:

Change the order of the INSERT statements.

标签:PostgreSQL,process,detected,accounts,ERROR,deadlock,id,SELECT
From: https://www.cnblogs.com/zhangzhihui/p/17872424.html

相关文章

  • PostgreSQL - Check blocking SQL statements
    pg_locksviewLookingat pg_locks showsyouwhatlocksaregrantedandwhatprocessesarewaitingforlockstobeacquired.Agoodquerytostartlookingforlockproblems:selectrelation::regclass,*frompg_lockswherenotgranted;pg_stat_activit......
  • PostgreSQL 16 正式登场,拓数派代码贡献揭示中国顶尖技术实力
    得益于全球的开发者贡献,PostgreSQL已成长为一款拥有众多全球用户和贡献者、成熟稳定的开源数据库。2023年9月14日,PostgreSQL全球开发小组正式发布16版本。本次新版本带来了众多惊喜。值得一提的是,本次发布中的贡献者中共有33名来自中国,而拓数派占其中1/6。作为开源数据库领......
  • 2023 PostgreSQL 数据库生态大会:解读拓数派大数据计算系统及其云存储底座
    11月3日-5日,由中国开源软件推进联盟PostgreSQL分会主办的中国PostgreSQL数据库生态大会在北京中科院软件所隆重举行。大会以”极速进化·融合新生”为主题,从线下会场和线上直播两种方式展开,邀请了数十位院士、教授、高管和社群专家,是2023不容错过的学习机会。拓数派作为PG生态......
  • 【PostgreSQL 数据库线下沙龙(武汉站)】PieCloudDB Database :云原生分布式虚拟数仓的诞
    2023年6月3日,开源软件联盟PostgreSQL中文社区在武汉举办了技术沙龙活动。本次活动主题围绕未来数据库展开讨论和分享。通过探讨未来数据库的概念和特点,为智能化时代的发展提供更多的支持和服务。同时,通过探讨数据库和AI技术的共生共荣,推动数字经济的发展和创新,开创未来数据库的新......
  • 【PostgreSQL 数据库技术峰会(成都站)】云原生虚拟数仓 PieCloudDB Database 的架构和关
    2023年6月17日,中国开源软件推进联盟PostgreSQL分会在成都举办了数据库技术峰会。此次峰会以“新机遇、新态势、新发展”为主题,结合当下信创热潮、人工智能等产业变革背景,探讨PostgreSQL数据库在这些新机遇下的发展前景。峰会邀请众多行业大咖、学术精英、技术专家、技术爱好者......
  • DBeaver连接PostgreSQL后只有默认数据库“postgres”不显示其他数据库的问题解决办法
    我们在使用DBeaver连接PostgreSQL后,发现数据库中只有“postgres”默认数据库,不显示我们自己创建的数据库。1、......
  • postgresql从入门到精通教程 - 第36讲:postgresql逻辑备份
       PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUGPG技术大讲堂。 第36讲:PostgreSQL逻辑备份 第36讲:12月02日(周六)19......
  • postgreSql使用postgis实现空间聚簇
    聚合前 聚合后 具体sql/*使用ST_ClusterDBSCAN函数,ST_ClusterDBSCAN是窗口函数用来对数据进行聚簇第一个参数是字段,第二个参数是距离,他是用的是度,这里写0.000179大约就是20米,minpoints表示多少个聚合才算是一个簇,比如两台车就算是聚集,那就设置为2*/selectST......
  • PostgreSQL - Change Timezone
    ThedefaulttimezoneofanewlycreateddatabaseisUTC. Youcansetthetimezonetoanewvaluesessionlyorglobally:zzh@ZZHPC:~$dockerexec-itpostgres16psql-Urootzimple_bankpsql(16.1)Type"help"forhelp.zimple_bank=#SELECTc......
  • PostgreSQL - Execute sql file using psql
    zzh@ZZHPC:~$sudoaptinstallpostgresql-client zzh@ZZHPC:~$psql--versionpsql(PostgreSQL)14.9(Ubuntu14.9-0ubuntu0.22.04.1) zzh@ZZHPC:~$psqlpostgresql://root:aaa@localhost:5432/zimple_bankpsql(14.9(Ubuntu14.9-0ubuntu0.22.04.1),server......