错误:无法在只读事务中执行 nextval() - PostgreSQL

Dan*_*elo 2 postgresql spring

我可以在 spring mvc 上开发的应用程序上看到内部服务器错误,使用wildfly 作为网络服务器和数据库PostgreSQL。这个异常是什么意思?

ERROR: cannot execute nextval() in a read-only transaction
Run Code Online (Sandbox Code Playgroud)

之前一切正常。我试图在 stackoverflow 上寻找解决方案,但没有找到任何可以解决此问题的方法。

Lau*_*lbe 5

该函数nextval()用于递增序列,从而修改数据库的状态。

您收到该错误是因为您处于只读事务中。这可能发生,因为

  1. 您显式地启动了一个只读事务START TRANSACTION READ ONLY或类似的。

  2. 配置参数default_transaction_read_only设置为on

  3. 您已连接到流式复制备用服务器。

如果default_transaction_read_only设置为on,则可以使用以下命令启动读写事务

START TRANSACTION READ WRITE;
Run Code Online (Sandbox Code Playgroud)

或通过编辑postgresql.conf或使用超级用户命令更改设置

ALTER SYSTEM SET default_transaction_read_only = off;
Run Code Online (Sandbox Code Playgroud)