gpt4 book ai didi

postgresql - 不能在只读事务中执行 nextval()

转载 作者:行者123 更新时间:2023-11-29 13:47:36 28 4
gpt4 key购买 nike

实际上我们对一些方法使用了 @Transactional(readOnly=true) 但这些方法以某种方式执行 nextVal() 这对其他数据库来说很好但是在 Postgres 9.6.3 上它会导致以下错误.

cannot execute nextval() in a read-only transaction

我正在查看 Postgres 邮件日志,发现此错误仅在 8.4.2 之后才会出现 https://www.postgresql.org/message-id/BANLkTik9ikVUU-bznOhZHmLbdEx5fverCw%40mail.gmail.com

有没有办法在数据库级别解决这个问题。

最佳答案

https://www.postgresql.org/docs/current/static/functions-sequence.html

Advance sequence and return new value

因此它会更改值 - 这不能在只读事务中完成。

更新

set transaction_read_only to on;

使 session 只读,而不仅仅是事务(SET LOCAL 就是这种情况)

从您的链接中引用 Craig

before 9.0, Pg just didn't notice and warn you.

所以在你没有被警告的时候就出现了一个错误。但是 nextval 没有滚动下一个值

没有什么可以解决她的问题 - 将 transaction_read_only 设置为关闭 并推进序列,或者使用 currval。您可以有一个只读事务,但可以修改数据 - 逻辑在哪里?..

关于postgresql - 不能在只读事务中执行 nextval(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45841042/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com