pg_restore: error: unrecognized data block type (0) while searching archive while trying to import postgres database to heroku
pg_restore: error: unrecognized data block type (0) while searching archive while trying to import postgres database to heroku
我试图将本地数据库导入 Heroku,我从这个 Whosebug 问题中得到启发 Push database to Heroku: how to use Heroku pg:push。我运行的命令是
PGUSER=postgres PGPASSWORD=mypassword heroku pg:push mydatabse_name DATABASE_URL -a myapp
我收到这个错误 pg_restore: error: unrecognized data block type (0) while searching archive
:
pg_dump: last built-in OID is 16383
pg_dump: reading extensions
pg_dump: identifying extension members
pg_dump: reading schemas
...
pg_dump: dumping contents of table "public.user"
pg_restore: creating TABLE "public.alembic_version"
...
pg_restore: processing data for table "public.alembic_version"
pg_restore: error: unrecognized data block type (0) while searching archive
! pg_restore errored with 1
我想知道如何解决这个问题?
我在运行执行此命令时遇到了这个问题
pg_dump -f database_output_name --no-owner --no-acl -U user_name name_of_your_local_database
database_output_name
输出文件的名称,您可以将其重命名为任何备份、数据库...等等
user_name
: postgres sql user_name 主要是postgres
name_of_your_local_database
: 是你的数据库的名字:mydb 或者你给的任何名字,如果你忘记了你可以在 PgAdmin 中查看
pg_dump
我已将它导出到全局路径,这就是我这样使用它的原因,您可以通过其他方式使用绝对路径调用它,即:C:\"Program Files"\PostgreSQL\bin\pg_dump
生成的输入文件应该看起来像这样
--
-- PostgreSQL database dump
--
-- Dumped from database version 14.1
-- Dumped by pg_dump version 14.1
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;
SET default_tablespace = '';
SET default_table_access_method = heap;
--
-- Name: alembic_version; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.alembic_version (
version_num character varying(32) NOT NULL
);
...
现在运行这个命令在heroku上创建数据库
heroku pg:psql --app heroku_app_name < database_output_name
如果你想重置你的数据库,你可以运行这个命令
heroku pg:reset -a heroku_app_name
现在您可以通过单击 postgres 查看 heroku 上的数据库 link
您应该会看到类似这样的内容,如果行数为 0,则您的数据库可能为空。
通过 PgAdmin 连接到 heroku 数据库
打开你的 PgAdmin 右键单击服务器并创建新服务器让我们将其命名为 Heroku
现在单击“连接”选项卡并填写这些信息,您可以在 hroku 应用程序的设置选项下找到它们 Config Vars reveal vars=> DATABASE_URL
数据库url的格式是这样的:
postgres://user:password@host:port/database
前任:
postgres://unancmnpxrgkmp:ababd6bcfed84a29549c32278204762d41b04be284a8b81750cbb6d356f8bcc7@ec2-54-209-221-231.compute-1.amazonaws.com:5432/d22q7soeu9pv6u
所以像这样填写信息
- 主机name/address:主机即:
ec2-54-209-221-231.compute-1.amazonaws.com
- 维护数据库:数据库即:
d22q7soeu9pv6u
- 用户名:用户名即:
unancmnpxrgkmp
- 密码=>密码即:
ababd6bcfed84a29549c32278204762d41b04be284a8b81750cbb6d356f8bcc7
现在点击保存,打开服务器后您应该会看到类似这样的内容。您应该向下滚动,直到在上面找到您的数据库名称 d22q7soeu9pv6u
,您可以打开它并检查表格,如果没有找到它,请刷新,确保您正确创建所有内容
Yeeeees,终于 ElhamdulilAllah :D
我试图将本地数据库导入 Heroku,我从这个 Whosebug 问题中得到启发 Push database to Heroku: how to use Heroku pg:push。我运行的命令是
PGUSER=postgres PGPASSWORD=mypassword heroku pg:push mydatabse_name DATABASE_URL -a myapp
我收到这个错误 pg_restore: error: unrecognized data block type (0) while searching archive
:
pg_dump: last built-in OID is 16383
pg_dump: reading extensions
pg_dump: identifying extension members
pg_dump: reading schemas
...
pg_dump: dumping contents of table "public.user"
pg_restore: creating TABLE "public.alembic_version"
...
pg_restore: processing data for table "public.alembic_version"
pg_restore: error: unrecognized data block type (0) while searching archive
! pg_restore errored with 1
我想知道如何解决这个问题?
我在运行执行此命令时遇到了这个问题
pg_dump -f database_output_name --no-owner --no-acl -U user_name name_of_your_local_database
database_output_name
输出文件的名称,您可以将其重命名为任何备份、数据库...等等user_name
: postgres sql user_name 主要是postgresname_of_your_local_database
: 是你的数据库的名字:mydb 或者你给的任何名字,如果你忘记了你可以在 PgAdmin 中查看
pg_dump
我已将它导出到全局路径,这就是我这样使用它的原因,您可以通过其他方式使用绝对路径调用它,即:C:\"Program Files"\PostgreSQL\bin\pg_dump
生成的输入文件应该看起来像这样
--
-- PostgreSQL database dump
--
-- Dumped from database version 14.1
-- Dumped by pg_dump version 14.1
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;
SET default_tablespace = '';
SET default_table_access_method = heap;
--
-- Name: alembic_version; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.alembic_version (
version_num character varying(32) NOT NULL
);
...
现在运行这个命令在heroku上创建数据库
heroku pg:psql --app heroku_app_name < database_output_name
如果你想重置你的数据库,你可以运行这个命令
heroku pg:reset -a heroku_app_name
现在您可以通过单击 postgres 查看 heroku 上的数据库 link
您应该会看到类似这样的内容,如果行数为 0,则您的数据库可能为空。
通过 PgAdmin 连接到 heroku 数据库
打开你的 PgAdmin 右键单击服务器并创建新服务器让我们将其命名为 Heroku
现在单击“连接”选项卡并填写这些信息,您可以在 hroku 应用程序的设置选项下找到它们 Config Vars reveal vars=>
DATABASE_URL
数据库url的格式是这样的:
postgres://user:password@host:port/database
前任:
postgres://unancmnpxrgkmp:ababd6bcfed84a29549c32278204762d41b04be284a8b81750cbb6d356f8bcc7@ec2-54-209-221-231.compute-1.amazonaws.com:5432/d22q7soeu9pv6u
所以像这样填写信息
- 主机name/address:主机即:
ec2-54-209-221-231.compute-1.amazonaws.com
- 维护数据库:数据库即:
d22q7soeu9pv6u
- 用户名:用户名即:
unancmnpxrgkmp
- 密码=>密码即:
ababd6bcfed84a29549c32278204762d41b04be284a8b81750cbb6d356f8bcc7
现在点击保存,打开服务器后您应该会看到类似这样的内容。您应该向下滚动,直到在上面找到您的数据库名称 d22q7soeu9pv6u
,您可以打开它并检查表格,如果没有找到它,请刷新,确保您正确创建所有内容
Yeeeees,终于 ElhamdulilAllah :D