postgresql pg_restore:错误:无法识别的数据块类型(0)当试图将postgres数据库导入heroku时搜索存档时

omtl5h9j  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(181)

我试图导入一个本地数据库到Heroku,我从这个StackOverflow问题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


我想知道如何解决这个问题?

hfyxw5xn

hfyxw5xn1#

我在运行此命令时遇到了此问题

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\14\bin\pg_dump

经过验证ourput文件应该如下所示

--
-- 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上的数据库
x1c 0d1x的数据
你应该看到类似这样的东西,如果行数为0,你可能有空数据库。


通过PgAdmin连接heroku数据库

  • 打开你的PgAdmin右键单击服务器和创建新的服务器让我们命名为Heroku
  • 现在点击连接选项卡并填写这些信息,您可以在hroku应用程序中的设置scroll到Config Varsreveal vars=> DATABASE_URL下找到它们

数据库url的格式如下:postgres://user:password@host:port/database ex:postgres://unancmnpxrgkmp:ababd6bcfed84a29549c32278204762d41b04be284a8b81750cbb6d356f8bcc [[email protected]](https://stackoverflow.com/cdn-cgi/l/email-protection) :5432/d22q7soeu9pv6u所以填写信息如下

  • 主机名/地址:主机即:ec2-54-209-221-231.compute-1.amazonaws.com
  • 维护数据库:数据库ie:d22q7soeu9pv6u
  • 用户名:用户名ie:unancmnpxrgkmp
  • password => password ie:ababd6bcfed84a29549c32278204762d41b04be284a8b81750cbb6d356f8bcc7



点击保存现在你应该看到这样的东西一旦你打开你的服务器。你应该向下滚动,直到你找到你的数据库的名称d22q7soeu9pv6u以上,你可以打开它,并检查表,如果你没有找到它刷新,确保你正确地创建一切


Yeeeees,finally ElhamdulilAllah:D

相关问题