pgsql 報錯 in a read-only transaction

PG cannot execute 一些dml,ddl語句的時候報:in a read-only transaction sql

這種狀況有多是如下緣由引發的:數據庫

1 可能發生了主備切換:查看/data/pg_hba.confmarkdown

  select pg_is_in_recovery(); 備機返回Tsession

2 show default_transaction_read_only 查看是否參數值爲ONide

DB級別:
alter database xxxxx set default_transaction_read_only = off;post

系統級別:postgresql

alter system set default_transaction_read_only=off;
select pg_reload_conf();進程

一些參數(實際上是看pg_settings 的context字段),是能夠不用重啓postgres cluster 就能夠生效it

pg_ctl -D /var/lib/pgsql/data reload
select pg_reload_conf()io

internal:這類參數爲只讀參數。有的是postgres程序寫死的,有些是在安裝數據庫時intdb時設置好的。

postmaster:這類參數須要重啓數據庫才能生效。

sighup:不須要重啓數據庫,但要向postmaster進程發送sighup信號,即須要pg_ctl reload命令。

backend:無需重啓數據庫,只需向postmaster進程發送sighup信號。但新的配置值只能在以後的新鏈接中生效,已有鏈接中這些參數值不會改變。

superuser:這類參數能夠由超級用戶使用set修改。參數設置後只會影響超級用戶自身的session配置,不會影響其餘用戶。

user:普通用戶使用set設置,這類參數修改後和superuser類參數同樣,也是隻影響自身session。僅當沒有經過set 設置會話本地值時,postgresql.conf中的改變纔會影響現有的會話

相關文章
相關標籤/搜索