Psql

如何阻止 psql 顯示已執行的 SQL?

  • February 28, 2018

當我執行 SQL 時,我看到查詢回顯給我。

=# \d
LOG:  statement: SELECT n.nspname as "Schema",
 c.relname as "Name",
 CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN
 [... LOT OF STUFF CUT]
                  List of relations
Schema |          Name          |   Type   |  Owner   
--------+------------------------+----------+----------

所有查詢也得到回顯,

=# SELECT * FROM ( VALUES (1) ) AS t(x);
LOG:  statement: SELECT * FROM ( VALUES (1) ) AS t(x);
x 
---
1
(1 row)

如何禁用此功能?我已經嘗試了很多東西。

有兩種方法可以使查詢回顯。

  • 使用psql -E(或)使用客戶端命令執行\set ECHO_HIDDEN的查詢會回顯給您。您可以通過執行並查找來查看是否設置了. 如果設置,您應該嘗試不使用 執行,而不是自己設置選項,並確保它沒有在. 如果設置查詢將在每個客戶端命令上方看起來像這樣psql``\command``\set``ECHO_HIDDEN``-E~/.psqlrc
********* QUERY **********
query
**************************
  • 如果你看到了LOG: statement:你可能在伺服器上有一些尷尬的配置,比如
client_min_messages='LOG';
log_statement='all';

有關更多資訊,請參閱有關錯誤報告和日誌記錄的文件。你應該檢查,

SHOW client_min_messages;
SHOW log_statement;

如果設置,這表明有人打開了伺服器配置文件並想要更多日誌記錄但不知道他們在做什麼。

在您的情況下,您必須LOG: statement:檢查伺服器設置。

引用自:https://dba.stackexchange.com/questions/198857