我刚刚在mac os上升级到postgres 10.2,在heroku上匹配10.2.我正在尝试下载数据库的副本并在本地恢复它.在升级之前,恢复将正常工作.
我跑
pg_restore --verbose --clean --no-acl --no-owner -h localhost -d database_name backup.dump
Run Code Online (Sandbox Code Playgroud)
但我收到这个错误:
pg_restore:[archiver]文件头中不支持的版本(1.13)
数据库似乎工作正常.它是一个rails应用程序,我升级了pg宝石.我可以跑rake db:create,db:migrate也很好.
我在Linux服务器上有一个Postgres 8.4数据库,我使用以下命令转储:
pg_dump --format=c --exclude-table=log --file=/path/to/output my_db
Run Code Online (Sandbox Code Playgroud)
然后我将创建的文件ftp到我的本地Windows 7计算机,并尝试使用以下命令将文件恢复到我的本地Postgres 8.4实例:
pg_restore --create --exit-on-error --verbose c:\path\to\file
Run Code Online (Sandbox Code Playgroud)
restore命令生成大量输出,声称它创建了我的数据库,连接到它,然后按预期创建了所有其他表.但是,当我通过pgAdmin查看本地计算机上的数据库时,恢复的数据库根本不存在.
在尝试进行故障排除时,我尝试了以下命令:
pg_restore --create --exit-on-error --verbose --host=blahblah --username=no_one c:\path\to\file
Run Code Online (Sandbox Code Playgroud)
当我运行此命令时,即使给出的主机和用户名是完全无意义的,我仍然可以从命令获得完全相同的输出而没有任何错误.
有没有人遇到这个或知道什么可以导致这个?
我temp1使用follwing命令转储了一个名为的数据库
$ pg_dump -i -h localhost -U postgres -F c -b -v -f pub.backup temp1
Run Code Online (Sandbox Code Playgroud)
现在我想在另一个名为"db_temp"的数据库中恢复转储,但是我只是希望所有表都应该在"temp_schema"(而不是fms temp1数据库中的默认模式)中创建"db_temp"数据库.
有没有办法用pg_restore命令做到这一点?
任何其他方法也不胜感激!
我使用备份
pg_dump db_production > postgres_db.dump
Run Code Online (Sandbox Code Playgroud)
然后我使用scp将其复制到localhost.
现在,当我导入我的本地数据库时,它会出错
pg_restore: [archiver] input file appears to be a text format dump. Please use psql.
Run Code Online (Sandbox Code Playgroud)
通过使用commad行
pg_restore -d db_development postgres_db.dump
Run Code Online (Sandbox Code Playgroud) 我有一个实时服务器和开发盒,分别称它们为 live 和 dev,它们都运行 postgresql。我可以使用 pgadmin4 轻松查看和管理两者,并且当我在开发箱上以调试模式通过网站运行时,两者都功能齐全,一个是实时网站,另一个是。很普通的设定。
多年来,我一直在运行我编写的相同 bash 脚本,该脚本转储实时数据库,然后在开发箱上恢复它,因此我拥有最新的实时快照。
今天,这让我失望了标题消息:
pg_restore: [archiver] unsupported version (1.14) in file header
Run Code Online (Sandbox Code Playgroud)
我试图诊断这个问题,并在网上进行了广泛的搜索,但我很困惑并且失败了,所以在这里我掌握了专业知识。
为了帮助我将分享以下内容:
$ pg_dump --version
pg_dump (PostgreSQL) 10.11 (Ubuntu 10.11-1.pgdg18.04+1)
$ pg_restore --version
pg_restore (PostgreSQL) 10.11 (Ubuntu 10.11-1.pgdg18.04+1)
$ pg_dump --host=live.lan --port=5432 --dbname=mydb --username=myuser --format=custom > test.backup
$ ls -l test.backup
-rw-r--r-- 1 bernd bernd 2398358 Dec 23 23:40 test.backup
$ file test.backup
test.backup: PostgreSQL custom database dump - v1.14-0
$ pg_restore --dbname=mydb test.backup
pg_restore: [archiver] unsupported version (1.14) in file …Run Code Online (Sandbox Code Playgroud) 我想在数据库转储中搜索一些数据,但这些转储使用二进制压缩格式(PGDMP标头).
如何在不恢复它们的情况下将这些转换为SQL?
psql有一个-q/ --quiet选项(环境变量QUIET). pg_restore没有安静的选择.是否有任何方法可以pg_restore不冗长地显示它正在执行的SQL命令?
# e.g., here's the verbose output that I don't want to see:
$ pg_restore --cluster 8.4/mycluster mycluster.dump
---- PostgreSQL database dump
--
SET statement_timeout = 0;SET client_encoding = 'UTF8';
SET standard_conforming_strings = off;SET check_function_bodies = false;
...
--
-- Name: data_src; Type: TABLE; Schema: public; Owner: postgres; Tablespace:--
CREATE TABLE data_src (
...
Run Code Online (Sandbox Code Playgroud) 自从我买了一台新的基于 ARM 的 M1 MacBook Pro,我就一直遇到严重且一致的 PostgreSQL 问题 (psql 13.1)。无论我使用 Rails 服务器还是 Foreman,我都会在浏览器和终端中收到错误,例如PG::InternalError: ERROR: could not read block 15 in file "base/147456/148555": Bad addressorPG::Error (invalid encoding name: unicode)或Error during failsafe response: PG::UnableToSend: no connection to the server。奇怪的是,我经常可以反复刷新浏览器以使其正常工作(直到它们不可避免地再次出现)。
我知道与基于 ARM 的 M1 Mac 相关的所有配置挑战,这就是为什么我以多种方式多次卸载并重新安装从 Homebrew 到 Postgres 的所有内容(使用 Rosetta,不使用 Rosetta,使用arch -x86_64 brew命令,使用 Postgres 应用程序)而不是 Homebrew 安装)。我在随机留言板上遇到了其他几个人,他们遇到了同样的问题(也在新的 Mac 上)并且没有任何运气,这就是为什么我不愿意相信这是一个驱动器损坏问题。(我也多次运行磁盘工具急救检查;它说一切正常,但我不知道它有多可靠。)
我正在使用thoughtbot parity 将我的开发环境数据库与当前生产中的数据库同步。当我运行时development restore production,我在终端中得到数百行,看起来像下面的输出(这是在下载完成后立即但在继续创建默认值、处理数据、序列集等之前)。我相信这是问题的根源,但我不确定解决方案是什么:
pg_restore: dropping TABLE [table name1]
pg_restore: from TOC …Run Code Online (Sandbox Code Playgroud) pg-restore thoughtbot macos-big-sur postgresql-13 apple-silicon
我正在使用以下语法进行pg_dump和恢复
pg_dump eval --inserts -b -c --encoding UTF8 -Fc -f eval.sql.tar.gz -x -U postgres
createdb -T template0 test -U postgres
pg_restore -d test eval.sql.tar.gz -e -U postgres
Run Code Online (Sandbox Code Playgroud)
转储是成功的,没有错误,但恢复会产生一些错误,我正在使用相同的用户和特权在同一台机器上转储和恢复...
我已尝试过其他格式,普通,焦油,压缩都得到相同的错误..
我的pg版本是8.4.11,psql版本是8.4.11
我不确定是什么造成这些错误..任何人都可以帮助我
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 4965; 0 138871 TABLE DATA ir_act_report_xml insigni
pg_restore: [archiver (db)] could not execute query: ERROR: invalid input syntax for integer: "purchase.order"
LINE 1: ...st for Quotation', 'ir.actions.report.xml', NULL, 'purchase....
^
Command was: INSERT INTO ir_act_report_xml …Run Code Online (Sandbox Code Playgroud) 更新: 能够在pg_dump命令中排除表中的数据.比尝试不加载数据更快,因为您不必等待转储数据.
--exclude-table-data=event_logs
(PostgreSQL) 9.4.4
有人知道如何排除表格pg_restore吗?我可以在做的时候找到怎么做pg_dump.但是我不是那个进行转储的人,也不能排除它们.
转储中有2个表非常大,当我进行恢复时会永远占用,所以我想跳过它们.