我想使用
heroku pg:push
命令将本地 postgresql 数据库推送到 heroku。该命令如下所示:heroku pg:push mylocaldb DATABASE --app sushi
根据heroku文档:https://devcenter.heroku.com/articles/heroku-postgresql。
这是我的本地数据库信息:
Name: mysitedb
User: bill
Password: bill
我机器中的 DATABASE_URL 环境变量设置为:
postgres://bill:bill@localhost/mysitedb
。
我的应用程序的名称是
secure-gorge-4090
。我尝试过heroku pg:push mysitedb DATABASE --app secure-gorge-4090
。输出是:
! Remote database is not empty.
! Please create a new database, or use `heroku pg:reset`
我很惊讶我没有在数据库中添加任何内容。但我仍然运行
heroku pg:reset DATABASE
来重置我的数据库。之后我又尝试了heroku pg:push mysitedb DATABASE --app secure-gorge-4090
,但输出还是一样。
我尝试过
heroku pg:push postgres://bill:bill@localhost:8000/mysitedb DATABASE --app secure-gorge-4090
。输出是:
! LOCAL_SOURCE_DATABASE is not a valid database name
我不知道如何使用这个命令将我的本地数据库移动到heroku。我需要你的帮助。谢谢!
您实际上是在命令中输入了标记
DATABASE
,还是您在该问题中使用的占位符?从您链接到的文档:
Like pull but in reverse, pg:push will push data from a local database into
a remote Heroku Postgres database. The command looks like this:
$ heroku pg:push mylocaldb HEROKU_POSTGRESQL_MAGENTA --app sushi
This command will take the local database “mylocaldb” and push it to the
database at DATABASE_URL on the app “sushi”. In order to prevent accidental
data overwrites and loss, the remote database must be empty. You will be
prompted to pg:reset an already a remote database that is not empty.
Usage of the PGUSER and PGPASSWORD for your local database is also supported
for pg:push, just like for the pg:pull commands.
当您执行
heroku config -a secure-gorge-4090
时,您应该会看到 HEROKU_POSTGRESQL_[SOME COLOR NAME]
的条目。确保您在命令中使用该标记而不是 DATABASE
。
由于您在本地数据库中有用户名和密码,因此您还需要执行有关
PGUSER
和 PGPASSWORD
提到的部分。这是 pg:pull
文档中的示例:
$ PGUSER=postgres PGPASSWORD=password heroku pg:pull HEROKU_POSTGRESQL_MAGENTA mylocaldb --app sushi
所以你应该这样做:
$ PGUSER=bill PGPASSWORD=bill heroku pg:push mysitedb HEROKU_POSTGRESQL_[SOME COLOR] -a secure-gorge-4090
我知道这是一个古老的讨论,但我也遇到了完全相同的问题。虽然不太方便,但我设法通过 pg:backups 实现了这一点。
这在 heroku 支持网站
上有非常详细的介绍首先安装免费的 pgbackups 插件:
heroku addons:add pgbackups
然后使用本地 pg_dump 实用程序(包含在 PostGreSQL 发行版中)备份数据库
pg_dump -Fc --no-acl --no-owner -h localhost -U myuser mydb > mydb.dmp
然后将该转储文件放在 URL 可寻址的地方(例如 Dropbox)并运行 heroku 导入(确保它在 Windows 中是双引号):
heroku pg:backups:restore 'https://dropbox.com/dYAKjgzSTNVp4jzE/mydb.dmp' DATABASE_URL
您需要以下命令
PGUSER=root PGPWD=root heroku pg:push (local database name) DATABASE_URL --app heroku (app name)
确保您输入了正确的 postgres 用户名和密码
我是一个懒惰的程序员,而且效率很高,所以这比支付 AWS 备份将它们存储在 Excel 工作表中要容易得多。 这样可以节省成本,并且不使用效率不高的 PUSH: PULL。
使用CMD作为ADMIN将Excel数据插入Heroku Postgres数据库。
遵循说明
1. OPEN CMD AS ADMIN
2. heroku pg:sql postgresql-rugged-08088 --app sample
3. CREATE TABLE SERIAL_T ( id SERIAL , SERIAL VARCHAR(50), USE INT, DEVICES TEXT[], PRINTED BOOLEAN, PRIMARY KEY (id))
4. \COPY SERIAL_T (SERIAL, USE, DEVICES, PRINTED) FROM 'C:\Users\PATH\EXCEL-03-27-2021.csv' DELIMITER ','CSV HEADER;
对我来说没有任何问题的工作是
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\14\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 上的数据库 请检查此答案以获取更多详细信息:pg_restore:错误:在尝试将 postgres 数据库导入到heroku时搜索存档时无法识别的数据块类型(0)
对于任何可能面临无法将本地 postgreSQL 推送到 heroku (WINDOWS) 问题的人,请听我说完
dump
架构仅使用 pg_dump -s -f <DB_OUTPUT_NAME_ONLY_SCHEMA> --no-owner --no-acl -U <USERNAME> <LOCAL_DB_NAME>
heroku pg:psql --app <APP_NAME> < <DB_OUTPUT_NAME_ONLY_SCHEMA>
dump
仅数据使用pg_dump -a -f <DB_OUTPUT_NAME_ONLY_DATA> --no-owner --no-acl -U <USERNAME> <LOCAL_DB_NAME>
heroku pg:psql --app <APP_NAME> < <DB_OUTPUT_NAME_ONLY_DATA>