我使用命令从控制台连接到数据库:
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';
啊,真灵。
Problem:现在,每次从命令行连接到db时,我都必须运行上面的命令。有什么方法可以让这个编码永久化吗?
发布于 2020-06-01 07:34:45
您可以尝试在.psqlrc
file中设置此命令。
除非通过了
选项,psql尝试从系统范围内的启动文件(psqlrc)以及用户的个人启动文件(~/.psqlrc)中读取和执行命令,在连接到数据库之后,在接受正常命令之前。这些文件可以用来设置客户机和/或服务器,通常使用\set和set命令。
系统范围内的启动文件命名为psqlrc,并在安装的“系统配置”目录中查找,该目录通过运行pg_config -sysconfdir最可靠地识别。默认情况下,这个目录将是./etc/相对于包含PostgreSQL可执行文件的目录。可以通过PGSYSCONFDIR环境变量显式设置此目录的名称。
用户的个人启动文件名为.psqlrc,并在调用用户的主目录中查找。在缺少这种概念的Windows上,个人启动文件名为%APPDATA%\postgresql\psqlrc.conf。可以通过PSQLRC环境变量显式地设置用户启动文件的位置。
系统范围内的启动文件和用户的个人启动文件都可以通过在文件名(例如~/..psqlrc 9.2或~/..psqlrc 9.2.5)中添加一个破折号和PostgreSQL主或次要发布号来使psql版本特定于psql。最特定的版本匹配文件将优先于非版本特定的文件.。
https://stackoverflow.com/questions/62127456
复制相似问题