PG cannot execute UPDATE in a read-only transaction出现这种情况时,说明SQL语句可能是运行在一个PG集群中的非master节点上。查看data/pg_hba.conf。
SELECT pg_is_in_recovery();
This cannot return true in a master server because the only time a master server can be in recovery。
还有如下可能Normally the most plausible reasons for this kind of error are :
-
trying create statements on a read-only replica (the entire instance is read-only).
-
<username>
hasdefault_transaction_read_only
set to ON -
the database has
default_transaction_read_only
set to ON
alter database exercises set default_transaction_read_only = off;
https://stackoverflow.com/questions/31186414/error-cannot-execute-create-table-in-a-read-only-transaction
How to add column if not exists on PostgreSQL
With Postgres 9.6 this can be done using the option if not exists
ALTER TABLE table_name ADD COLUMN IF NOT EXISTS column_name INTEGER;
https://stackoverflow.com/questions/12597465/how-to-add-column-if-not-exists-on-postgresql