我的服务器上安装了两个PostgreSQL实例:8.3和9.0。 在postgresql 9.0客户端 – psql上,波兰的变音符号(如ółęąśżźć)存在接口问题。
当我用psql 8.3连接到数据库(8.3或9.0)时 – 我可以在terminal上input所有的变音符号而没有任何问题:
www:/tmp# sudo -u postgres /usr/lib/postgresql/8.3/bin/psql -q postgres=# ółśćń
但是,当我连接到相同的数据库与psql 9.0客户端 – 我不能在terminal上input变音符号:
www:/tmp# sudo -u postgres /usr/lib/postgresql/8.3/bin/psql -q
以下是一些编码设置:
www:/tmp# sudo -u postgres /usr/lib/postgresql/9.0/bin/psql -q -c "show client_encoding" client_encoding ----------------- UTF8 (1 row)
。
www:/tmp# sudo -u postgres /usr/lib/postgresql/8.3/bin/psql -q -c "show client_encoding" client_encoding ----------------- UTF8 (1 row)
。
www:/tmp# sudo -u postgres /usr/lib/postgresql/9.0/bin/psql -q -l List of databases Name | Owner | Encoding | Collation | Ctype | Access privileges ---------------------+--------------+----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | pl_PL.UTF-8 | pl_PL.UTF-8 |
。
www:/tmp# echo $LANG pl_PL.UTF-8
它看起来像数据库/集群configuration并不重要 – 如果terminal上的psql 8.x工作正常,并且psql 9.x没有。 任何想法如何解决?
这可能与psql 9.0.2从readline切换到libedit有关。 你可以尝试(为我工作,Ubuntu 10.04):
rlwrap psql -n ...
或者:
LD_PRELOAD='/lib/libreadline.so.5' psql ...
或者,build议安装termcap,但我没有尝试过(在Ubuntu中没有明显的方法)。