我正在尝试将当前的现有数据库导入到Azure PostgreSQL服务器上运行的postgre实例
我已经将我的azure postgresql服务器参数配置为使用编码作为UTF8(我不确定它是否无需重启就可以应用,即使我没有选择重启它的选项)
我正在尝试使用以下命令执行此操作:
sudo -u postgres pg_dump --encoding="UTF-8" --no-owner DBNAME | psql --host=xxx.postgres.database.azure.com --port=5432 --username=xxx@yyy --dbname=DBNAME
但是,它得到这样的错误:
错误:无法创建语言环境“ en_US.utf8”:无错误
我潜入这个过程,尝试使用UTF8(而不是UTF-8)和其他选项来运行它,但是每次都会遇到相同的错误。
我创建了一个转储文件来检查内容,并且生成此错误的行是:
CREATE COLLATION "en_US.utf8" (lc_collate = 'en_US.utf8', lc_ctype = 'en_US.utf8');
这是导致该错误的原因。我试图在Azure postgre实例上手动执行它,我也遇到了同样的错误。
顺便说一下,我已经使用以下SQL从控制台创建了该数据库:
create database "DBNAME" with owner=xxx encoding='UTF-8' template template0;
我也尝试了其他选项来创建和导入,但它们都不起作用。
有人能帮我吗?
我通过以下命令解决了我的问题:
sudo -u postgres pg_dump -Fp —no-owner DBNAME |sed “/COLLATE/s/en_US.utf8/English_United States.1252/ig”|sed "/CREATE COLLATION/s/en_US.utf8/English_United States.1252/ig"|psql --host=aaa.postgres.database.azure.com --port=5432 --username=xxx@yyy --dbname=DBNAME
问题来自服务器操作系统差异。我当前的PostgreSQL服务器使用Ubuntu,但是Azure PostgreSQL服务器使用Windows,因此排序规则名称略有不同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句