正在将postgresql本地数据库复制到远程数据库(均使用密码)-错误:option";地点“;不认识
使用Postgres 12/Windows 10 尝试使用以下命令将远程数据库复制到本地主机:正在将postgresql本地数据库复制到远程数据库(均使用密码)-错误:option";地点“;不认识,postgresql,psql,pg-dump,postgresql-12,postgresql-13,Postgresql,Psql,Pg Dump,Postgresql 12,Postgresql 13,使用Postgres 12/Windows 10 尝试使用以下命令将远程数据库复制到本地主机: pg_dump-C-h remotehost-p5432-U postgres remotedb | psql-h localhost-p5432-U postgres localdb CMD请求密码2x 用户postgres的密码:密码: 我首先输入localhost,按ENTER键,然后输入remotehost,然后再次按ENTER键 这就是我得到的回报: SET SET SET SET SET
pg_dump-C-h remotehost-p5432-U postgres remotedb | psql-h localhost-p5432-U postgres localdb
CMD请求密码2x
用户postgres的密码:密码:
我首先输入localhost,按ENTER键,然后输入remotehost,然后再次按ENTER键
这就是我得到的回报:
SET
SET
SET
SET
SET
set_config
------------
(1 row)
SET
SET
SET
SET
ERROR: option "locale" not recognized
LINE 1: ...ting" WITH TEMPLATE = template0 ENCODING = 'UTF8' LOCALE = '...
^
ERROR: database "remotedb" does not exist
\connect: FATAL: database "remotedb" does not exist
pg_dump: error: could not write to output file: Broken pipe
- 如何解决“第一个错误”选项“无法识别区域设置”
- 第二个错误与我如何输入密码有关吗?当两个数据库都请求密码时,我应该如何工作
创建数据库
的区域设置
选项,而postgres 13有
第12期研究生:
第13期研究生:
然后,在目标数据库上手动创建数据库并从命令中删除-C
,解决了此问题。下面是最后一个命令:
pg_dump-h remotehost-p5432-U postgres remotedb | psql-h localhost-p5432-U postgres localdb
观察到,我安装了postgres 12和13,但为postgres 13设置了psql
路径。因此,无论我试图在postgres 12数据库之间pg dump
,我都会得到locale
错误,因为psql
使用postgres 13运行命令
对问题2的回答
输入两个密码的过程是正确的:
您不需要手动创建数据库。
通过使用
sed
将LOCALE
替换为LC\u-COLLATE
,您可以在一行程序中执行以下操作:
您的命令应该如下所示:注意!仅当您使用脚本(纯文本)文件格式进行备份时,此操作才有效
pg_dump-C-h remotehost-p5432-U postgres remotedb | sed's/LOCALE/LC_COLLATE/| psql-h localhost-p5432-U postgres localdb
说明:
脚本转储是纯文本文件,包含重建数据库所需的SQL命令。将-C
标志添加到pg_dump
时,转储文件将包含以下语句:
- 12岁及以上的研究生
使用TEMPLATE=template0 ENCODING='UTF8'LC_COLLATE='en_US.UTF-8'LC_CTYPE='en_US.UTF-8'创建数据库yourdb;
- 博士后13
使用TEMPLATE=template0 ENCODING='UTF8'LOCALE='en_US.UTF-8'创建数据库yourdb;
通过使用sed
我们用pg_转储流中的LC_COLLATE
替换LOCALE
单词,以便psql能够在本地恢复db。即使缺少
LC\u CTYPE='en\u US.UTF-8'
,这仍然有效。这是由于我使用pg\u restore
的13.x连接到11.x(目标)和10.x(源)的dbs造成的
所以我刚刚安装了pgu restore
10.x
brew install postgresql@10
/usr/local/opt/postgresql@10/bin/pg_restore --all-the-args-here
下次我将更加小心地使用
--create
和--clean
参数来pg\u restore
似乎您正试图从PostgreSQL 13复制DB。PostgreSQL 12在create database
语句中没有locale
选项:但13有:从pg\dum中删除-C
选项p
并手动创建数据库。谢谢@Abelisto!节省了时间!!!删除-C
并手动创建数据库工作得非常好,与我输入密码的方式没有任何关系。太棒了,@Codrut!