我一直在试验 Postgres 配置参数,并注意到当我使用阻止 Postgres 启动的设置时,pg_log 目录日志中没有显示任何内容。我有
log_destination = 'stderr'
logging_collector = on
log_directory = 'pg_log'
Run Code Online (Sandbox Code Playgroud)
有没有办法让 Postgres 在 Windows 7 和 Postgres 9.3 上将启动错误记录到 pg_log?
我有一个流式复制热备用设置,它似乎运行良好。我可以登录,执行选择,结果似乎与主人是最新的。但是在备用的日志中,我看到了很多这样的:
cp: cannot stat `/mnt/wal_drive/wals/0000000100004BA800000070': No such file or directory
2014-02-28 16:00:37 CET LOG: record with zero length at 4BA8/70DD79D0
2014-02-28 16:00:37 CET LOG: started streaming WAL from primary at 4BA8/70000000 on timeline 1
2014-02-28 16:02:59 CET FATAL: could not receive data from WAL stream: SSL error: sslv3 alert unexpected message
Run Code Online (Sandbox Code Playgroud)
这些分别是什么意思,我应该担心它们中的任何一个吗?
附注。在 master 中,我看到了其中一些,我希望它们与 SSL 相关:
2014-02-28 16:10:33 CET LOG: SSL renegotiation failure
2014-02-28 16:10:33 CET LOG: SSL error: unexpected record
Run Code Online (Sandbox Code Playgroud)
我在 ubuntu 12.04 上运行 postgresql 9.3
编辑
关于 …
PostgreSQL 表名限制为 63 个字符。
如果我将表名限制为 5 个字符之类的内容,或者我可以使用完整的 63 个字符而不会产生任何后果,是否会有性能提升?
我知道在创建查询时键入长名称会更长,但这就是别名的用途。
我想更新表中的行选择;这有效...
UPDATE t1 SET col1 = 'newvalue' WHERE col0 in (2, 4, 5);
Run Code Online (Sandbox Code Playgroud)
但是我怎么能在 plpgsql 函数中做同样的事情呢?下面给出了一个语法错误...
CREATE OR REPLACE FUNCTION foo(intarray int[])
RETURNS VOID AS
$BODY$
BEGIN
UPDATE t1 SET col1 = 'newvalue'
WHERE col0 in intarray;
END;
$BODY$
LANGUAGE plpgsql VOLATILE;
Run Code Online (Sandbox Code Playgroud)
错误...
ERROR: syntax error at or near "intarray"
LINE 7: WHERE col0 in intarray;
Run Code Online (Sandbox Code Playgroud)
编辑:
如果我们更换in intarray;用in (intarray);的功能被记录,但在运行时SELECT * FROM foo(ARRAY[1,3,5])的误差变...
ERROR: operator does not exist: integer = integer[]
LINE 2: WHERE …Run Code Online (Sandbox Code Playgroud) 为了扩展 PostgreSQL 流复制从属设备上的读取流量,我希望能够对请求进行负载平衡。Postgres 文档建议使用 pgPool 和 pgBouncer 之类的工具,但我想知道在 postgres 读取从站前面使用 TCP 负载均衡器(如 HAProxy 或 AWS Elastic Load Balancer)是否有问题(原则上)。
负载均衡器充当需要由客户端发出的读取请求的单个读取端点。一个显着的优势是当读取从属服务器关闭时读取请求不会受到影响,因为负载均衡器中的其他服务器可以接收负载。
我正在尝试启用与在 ubuntu 12.04 上运行的 postgresql 9.1 db 的远程连接。
本教程说“将 tcpip_socket 设置为 true”——但它适用于 centos 服务器。我在 ubuntu 上。
我的 postgresql.conf 中没有看到这一行。
$cat /etc/postgresql/9.1/main/postgresql.conf | grep tcpip_socket
Run Code Online (Sandbox Code Playgroud)
当我添加它时,我收到错误:
"FATAL: unrecognized configuration parameter "tcpip_socket"
Run Code Online (Sandbox Code Playgroud)
如果它在 ubuntu 12.04 上运行,我是否需要告诉 postgres 9.1“打开”tcp_ip 连接?
pgAdmin 有没有办法将 Postgres 数据库组织到“文件夹”或组中?我创建的每个 Django 项目都有自己的 Postgres 数据库,我想找到一种组织它们的方法。
我在 StackOverflow ( /sf/ask/1590934061/ )上问了这个问题,我的问题被“搁置”,因为它偏离了主题。
在 StackOverflow 上,Erwin Brandstetter 建议我创建一个新的服务器组并设置组对话框:

我的问题是:如何为“组”下拉框创建新选项?当我在 MacBook Pro 上使用 pgAdmin3 命令“添加服务器”时,我只在“组”下看到一个名为“服务器”的选项。
我需要创建一个新的“数据库集群”吗?我在 Postgres 文档的 17.2 节中找到了这个命令:
$ initdb -D /usr/local/pgsql/data
Run Code Online (Sandbox Code Playgroud)
在我的 MacBook Pro 上,我的默认数据库位于/usr/local/var/postgres/base和/usr/local/var/postgres/global。
我应该创建一个新目录,例如/usr/local/var/postgres2,然后执行这样的命令吗?
$ initdb -D /usr/local/var/postgres2
Run Code Online (Sandbox Code Playgroud) 给定的 Oracle 查询通过替换变量将数据插入表中。我如何在 PostgreSQL 中实现相同的目标?
INSERT INTO control_threshold (
threshold_id, group_name, description, sql, low_value, high_value)
VALUES(
threshold_seq.nextval, '&2', '&1', TRIM('&5' || '&6' || '&7' || '&8' || '&9'),
trim('&3'), trim('&4'));
Run Code Online (Sandbox Code Playgroud) 这是有点恼人键入EXPLAIN (ANALYZE, BUFFERS, VERBOSE)的psql工具,当你每次优化查询。
那么,有没有办法以类似于它的方式定义别名(自动完成的会非常好)?psqlbash
例如FULLEXPLAIN SELECT * FROM pg_stat;结果为EXPLAIN (ANALYZE, BUFFERS, VERBOSE) SELECT * FROM pg_stat;
假设我正在搜索三个文本列。我不仅想要与给定单词或短语匹配的结果,而且还想对它们进行加权 ( column A > column B > column C) - 从而对结果进行排序,使得与列中的单词匹配的行A将比列中匹配的行高B,而那些column 中的匹配B将高于 column 中的匹配C。
这可能吗?你能为我提供一些术语或进一步阅读的建议吗?
postgresql ×10
psql ×2
array ×1
logs ×1
order-by ×1
pgadmin ×1
plpgsql ×1
replication ×1
scalability ×1
sqlplus ×1
ubuntu ×1