【发布时间】:2022-08-11 15:48:59
【问题描述】:
我有一个应该备份现有 PostgreSQL 的代码,但是当我运行代码时出现错误
pg_dump: error: could not translate hostname \"localhost\" to address: Unknown server error
我将 bin 和 lib 的文件夹路径保存在环境变量中,但仍然显示相同的错误,请任何人帮助我
下面是代码:
import subprocess
import os
os.chdir(\'C:/Program Files/PostgreSQL/14/bin\')
DB_NAME = \'postgress\' # your db name
DB_USER = \'postgres\' # you db user
DB_HOST = \"localhost\"
DB_PASSWORD = \'ABC\'# your db password
dump_success = 0
print(\'Backing up %s database \' % (DB_NAME))
command_for_dumping = f\'pg_dump --host={DB_HOST} \' \\
f\'--dbname={DB_NAME} \' \\
f\'--username={DB_USER} \' \\
f\'--no-password \' \\
f\'--file=tmp/backup.dmp \'
try:
proc = subprocess.Popen(command_for_dumping, shell=True, env={
\'PGPASSWORD\': DB_PASSWORD
})
proc.wait()
except Exception as e:
dump_success = 0
print(\'Exception happened during dump %s\' %(e))
if dump_success:
print(\'db dump successfull\')
print(\' restoring to a new database database\')
backup_file = \'tmp/backup.dmp\'
\"\"\"give absolute path of your dump file. This script will create the backup.dmp in the same directory from which u are running the script \"\"\"
if not dump_success:
print(\'dump unsucessfull. retsore not possible\')
else:
try:
process = subprocess.Popen(
[\'pg_restore\',
\'--no-owner\',
\'--dbname=postgresql://{}:{}@{}:{}/{}\'.format(\'postgres\',#db user
\'ABC\', #db password
\'localhost\', #db host
\'5432\', \'ReplicaDB\'), #db port ,#db name
\'-v\',
backup_file],
stdout=subprocess.PIPE
)
output = process.communicate()[0]
except Exception as e:
print(\'Exception during restore %e\' %(e) )
所以在输出中它显示一个错误:
pg_dump:错误:无法将主机名“localhost”转换为地址:未知服务器错误
我是这种语言的新手,所以我不确定我是否犯了错误。谁能指导我。
-
如果这是在没有网络连接的 Windows 机器上,那么您的问题可能是 Windows 在离线时无法解析 \'localhost\' 的地址。为了解决这个问题,您可以在 hosts 或 lmhosts 文件中为 localhost 添加一个条目。或者您可以使用地址
127.0.0.1而不是localhost -
我使用了 127.0.0.1 但它仍然显示相同的错误
标签: python psql pgadmin database-backups pgadmin-4