【问题标题】:Is there any way to SET client_encoding TO 'UTF8' permanent?有什么方法可以将 client_encoding 永久设置为“UTF8”吗?
【发布时间】:2020-06-01 07:28:01
【问题描述】:

我使用命令从控制台连接到我的数据库:

psql -U postgres task_db

并做了这个选择查询:

select * from common.task;

我收到此错误:

ERROR:  character with byte sequence 0xe5 0xb0 0x8f in encoding "UTF8" has no equivalent in encoding "WIN1252"

并按照这个答案中的这个命令来解决这个问题:https://stackoverflow.com/a/38487921/7505731

SET client_encoding TO 'UTF8';

成功了。

问题:现在我每次从命令行连接到 db 时都必须运行上面的命令。有什么办法可以永久设置此编码?

【问题讨论】:

    标签: postgresql psql


    【解决方案1】:

    您可以尝试在.psqlrc file 中设置此命令:

    除非传递了 -X 选项,否则 psql 会尝试从系统范围的启动文件 (psqlrc) 读取并执行命令,然后 用户的个人启动文件(~/.psqlrc),在连接到 数据库,但在接受正常命令之前。这些文件可以使用 设置客户端和/或服务器来品尝,通常使用 \set 和 SET 命令。

    系统范围的启动文件名为 psqlrc 并在安装的“系统配置”目录中查找,该目录是最 通过运行 pg_config --sysconfdir 可靠地识别。默认情况下这个 目录将是 ../etc/ 相对于包含 PostgreSQL 可执行文件。这个目录的名字可以设置 显式地通过 PGSYSCONFDIR 环境变量。

    用户的个人启动文件名为 .psqlrc 并在调用用户的主目录中查找。在 Windows 上,缺少这样的 概念,个人启动文件命名为 %APPDATA%\postgresql\psqlrc.conf。用户启动的位置 文件可以通过 PSQLRC 环境变量显式设置。

    系统范围的启动文件和用户的个人启动文件都可以通过附加破折号和 PostgreSQL 主要或次要版本号到文件名,例如 ~/.psqlrc-9.2 或 ~/.psqlrc-9.2.5。最具体的版本匹配 将优先读取文件而不是非特定于版本的文件。

    【讨论】:

      猜你喜欢
      • 2021-11-19
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多