database – 在Linux上为PostgreSQL配置语言环境
我在设置和运行特定数据库时遇到问题.我正在尝试恢复我从其他人那里获得的postgreSQL转储.我试过几种方法无济于事.
>直接来自pg_restore pg_restore -C -d postgres –exit-on-error maggie_prod_20111221.dump.sql createdb -T template0 maggieprod -E LATIN1 SQL:CREATE TABLESPACE magdat OWNER maggie LOCATION’/ somewhere / magdat’; pg_restore -v -d template1 maggie_prod_20110121.dump.sql 使用第一种方法,我得到以下内容: pg_restore:[archiver(db)]处理TOC时出错: pg_restore:[archiver(db)]来自TOC条目2308的错误; 1262 16386 DATABASE maggieprod postgres pg_restore:[archiver(db)]无法执行查询:错误:编码LATIN1与区域设置en_CA.utf8不匹配 DETAIL:选择的LC_CTYPE设置需要编码UTF8. 使用第二个,当我尝试创建数据库时,我得到: createdb:数据库创建失败:错误:编码LATIN1与区域设置en_CA.utf8不匹配 DETAIL:选择的LC_CTYPE设置需要编码UTF8. 所以似乎我无法创建LATIN1编码数据库?这是为什么?我是语言环境和编码的新手,并不太了解它们.我只知道转储是由LATIN1数据库完成的. 语言环境的输出是: LANG = en_CA.utf8 而locale -a的输出是: C 我不会在第二个命令中看到LATIN1,不是吗?如果是这样,我将如何添加它?假设我需要更改计算机上的语言环境,这是正确的吗?如果是这样,有没有办法只为postgreSQL做到这一点?此外,当我尝试打开转储时,我看到很多垃圾字符,我假设这是因为编码,我将如何正确地看待它? 谢谢你的帮助. 解决方法
您需要使用与编码匹配的区域设置创建数据库,例如,
createdb -T template0 maggieprod -E LATIN1 --locale=en_CA 由于您没有安装所有语言环境,我猜您使用的是Debian或Ubuntu.在这种情况下,请调用dpkg-reconfigure locales或安装locales-all软件包. 或者,使用UTF8编码创建数据库.只要您的所有客户端正确设置客户端编码,它就不会有所作为. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |