postgresql - 插入期间奇怪的 psql 行为,当表名以 0 结尾时
问题描述
我遇到插入失败。准确地说,它不会导致错误,但是当我运行以下代码时它只是冻结并且不执行任何操作:
INSERT INTO public.table_0 VALUES(CURRENT_TIMESTAMP, -999.25);
请注意我插入的表名如何以0
. 但是,如果我插入到名称不以 digit 结尾的不同表中0
,则插入效果很好。
INSERT INTO public.table_50 VALUES(CURRENT_TIMESTAMP, -999.25);
为什么会这样?
解决方案
很可能有什么东西在锁住public.table_0
你的插入物。
您可以使用如下查询来识别阻塞锁:
SELECT locktype, relation, transactionid, pid, mode
FROM pg_locks WHERE NOT granted;
locktype | relation | transactionid | pid | mode
---------------+----------+---------------+------+-----------
transactionid | | 4125 | 4434 | ShareLock
(1 row)
然后在最近的 PostgreSQL 版本中,您可以看到谁在阻止该后端:
SELECT pg_blocking_pids(4434);
pg_blocking_pids
------------------
{4589}
(1 row)
您应该找到一个在事务中处于活动或空闲状态的语句:
SELECT datname, usename, application_name, xact_start, state
FROM pg_stat_activity WHERE pid = 4589;
datname | usename | application_name | xact_start | state
---------+---------+------------------+-------------------------------+---------------------
test | laurenz | psql | 2018-10-25 07:03:13.112879+02 | idle in transaction
(1 row)
推荐阅读
- macos - 使用 applescript 更改屏幕刷新率
- azure - Azure 流分析查询中的限制 1 或前 1
- spring - 无法自动装配 NamedParameterJdbcTemplate:需要“dataSource”或“jdbcTemplate”
- javascript - 我怎样才能让这个RNG有一个大小?
- android - Gradle 错误:ProductFlavor 名称不能以“test”开头
- java - 将二维数组写入 Google 电子表格
- axios - 尝试使用 Axios / node-fetch 将 apk 文件上传到 Browserstack 云时出错
- google-maps - Xamarin.Forms.GoogleMaps 动画图钉
- python - ImportError:使用 SWIG 时 _...so 文件中的未定义符号
- c++ - 在 MENUITEMINFO 上创建位图不会加载位图