首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >postgresql插入冲突触发器试图删除不可见元组错误

postgresql插入冲突触发器试图删除不可见元组错误
EN

Stack Overflow用户
提问于 2016-12-08 22:04:57
回答 1查看 289关注 0票数 1

当我两次插入相同的数据时,我有时会在日志中看到以下错误:

代码语言:javascript
运行
复制
error: attempted to delete invisible tuple
    at Connection.parseE (/home/ubuntu/vacation-server/node_modules/pg/lib/connection.js:554:11)
    at Connection.parseMessage (/home/ubuntu/vacation-server/node_modules/pg/lib/connection.js:381:17)
    at Socket.<anonymous> (/home/ubuntu/vacation-server/node_modules/pg/lib/connection.js:117:22)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:188:7)
    at readableAddChunk (_stream_readable.js:176:18)
    at Socket.Readable.push (_stream_readable.js:134:10)
    at TCP.onread (net.js:548:20)

我的查询如下:

代码语言:javascript
运行
复制
    INSERT INTO google_places (
      id,
      data,
      geographic_coordinates
    ) VALUES (
      $1,
      $2,
      ST_GeomFromText('POINT(-118.440908 34.063246)', 4326)
    )
    ON CONFLICT (id) DO UPDATE
      SET data = EXCLUDED.data,
        geographic_coordinates = EXCLUDED.geographic_coordinates,
        date_updated = CURRENT_TIMESTAMP
    RETURNING *

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-08 22:43:34

在9.5.5之前的版本中,在某些特定情况下,向上插入TOASTed数据会引发此异常。我使用基于函数索引(特别是ON CONFLICT (md5(myblob)) DO UPDATE)的冲突键遇到了它,但这是相同的错误。

邮件列表中的这个帖子有完整的详细信息。这个bug已经在9.5.5和9.6中修复了,但是我不知道早期版本的Postgres有什么简单的解决方法。最后我不得不使用一个老式的CTE插入。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41049664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档