错误:连接到数据库时,在只读事务中无法执行SELECT

10
尝试连接我的亚马逊PostgreSQL数据库时,出现了以上错误。在pgAdmin中,我收到了“保存属性时出错”的错误信息。 我不明白为什么要连接服务器时还需要进行任何写操作?
2个回答

12

出现这个错误可能有几个原因:

  1. PostgreSQL集群正在恢复中(或者是流复制的备库)。您可以通过运行以下命令来确定是否是这种情况:

  2. SELECT pg_is_in_recovery();
    
  3. 参数default_transaction_read_only被设置为on。使用以下命令进行诊断:

  4. SHOW default_transaction_read_only;
    
  5. 当前事务已开始

  6. START TRANSACTION READ ONLY;
    

    您可以使用未记录的参数来确定是否存在这种情况

    SHOW transaction_read_only;
    
    如果您理解了上述内容,但仍然想知道为什么会出现此错误,因为您没有意识到尝试进行任何数据修改,那么这意味着您使用的应用程序尝试修改某些内容(但pgAdmin不应该这样做)。
    在这种情况下,请查看日志文件以找出导致错误的语句。

但是在这个阶段,我甚至还没有连接到服务器。当它尝试连接时,它会抛出这些错误。 - Gilles Groven
你可以尝试使用 psql 吗?你能获取到 PostgreSQL 的日志文件吗? - Laurenz Albe
我的新创建的数据库处于恢复模式,SHOW transaction_read_only; 的结果为true。 我该如何将恢复模式关闭并将只读设置为false? - Gajendra D Ambi
@GajendraDAmbi 你是怎么创建那个数据库的?我想不出在恢复模式下如何创建一个数据库。但我认为你应该针对你的问题提出一个新的问题。 - Laurenz Albe
@LaurenzAlbe 手动从 pgadmin4 中执行,但我没有解决它,我只是在执行命令之前必须先连接到 DB。 - Gajendra D Ambi

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接