我安装了 PostgreSQL 及其 GUI,pgAdmin III。
安装程序已经有一个默认的数据库 postgres。
当我尝试创建新表或数据库时,显示错误:
错误:无法在只读事务中执行 CREATE DATABASE
我取消注释default_transaction_read_only = offpostgresql.conf 中的行并执行命令,pg_ctl start -D /home/jaison/progresData -Z datanode -l logfile但它仍然显示相同的错误。
请帮我解决这个问题。
您始终可以通过发出以下命令来仔细检查您的问题,例如
/usr/bin/pgsql/bin/createdb test
与从 pgAdmin III 等 GUI 工具相比,您经常可以从命令行获得更好/更清晰的错误消息和/或其他信息。
但是,为了更改系统参数,您必须postgresql.conf在更改后重新加载文件。您可以通过以下任一方式执行此操作
重新启动服务器或
重新加载 .conf 文件或
在客户端更改
从这里开始,有些参数总是需要重新启动,有些参数可以通过简单的重新加载来动态更改。
我试图找到需要重新启动和需要重新加载的列表,但失败了(感谢您的输入!)。
对于系统重启,
要重新加载,您还可以尝试这些命令(从这里- 或查看上面给出的文档页面)。
选项 1:从命令行 shell
su - postgres /path/to/pg_ctl reload
Run Code Online (Sandbox Code Playgroud)
选项 2:使用 SQL
SELECT pg_reload_conf();
Run Code Online (Sandbox Code Playgroud)
您可以验证该设置是否已从表 pg_settings 中“获取”。同样感兴趣的是这个页面。
对于default_transaction_read_only参数,您也可以直接从客户端进行设置(请参阅此处)。检查此处的链接以了解如何设置所有参数 - 重新启动、重新加载或客户端。
test=# SELECT name, setting FROM pg_settings WHERE name = 'default_transaction_read_only';
name | setting
-------------------------------+---------
default_transaction_read_only | on
(1 row)
test=#
test=# `SET default_transaction_read_only = OFF;`
SET
test=#
test=# SELECT name, setting FROM pg_settings WHERE name = 'default_transaction_read_only';
name | setting
-------------------------------+---------
default_transaction_read_only | off
(1 row)
test=#
test=# SET default_transaction_read_only = ON;
SET
Run Code Online (Sandbox Code Playgroud)