所以我已经阅读了pg:pull
上的documentation,但似乎无法让它发挥作用。当我使用正确的参数运行命令时,将获取我的Heroku数据库并创建本地数据库,但架构未在本地填充;例如,没有创建表,没有设置触发器,没有约束,没有数据等等。
这是我的数据库的heroku pg:info
日志:
=== HEROKU_POSTGRESQL_ORANGE_URL (DATABASE_URL)
Plan: Hobby-dev
Status: Available
Connections: 1
PG Version: 9.3.3
Created: 2014-04-02 19:24 UTC
Data Size: 7.4 MB
Tables: 6
Rows: 1376/10000 (In compliance)
Fork/Follow: Unsupported
Rollback: Unsupported
以下是我使用的命令:
PGUSER=postgres PGPASSWORD=password heroku pg:pull HEROKU_POSTGRESQL_ORANGE mylocaldb --app myappname
我无法弄清楚如何设置PGUSER
和PGPASSWORD
的环境变量(如果有人能指出我正确的方向,那么你将获得+1我读了this question并回答无效。
mylocaldb
已创建,但架构未填写。
命令运行后,这是pg_dump
:
pg_dump: reading schemas
pg_dump: reading user-defined tables
pg_dump: reading extensions
pg_dump: reading user-defined functions
pg_dump: reading user-defined types
pg_dump: reading procedural languages
pg_dump: reading user-defined aggregate functions
pg_dump: reading user-defined operators
pg_dump: reading user-defined operator classes
pg_dump: reading user-defined operator families
pg_dump: reading user-defined text search parsers
pg_dump: reading user-defined text search templates
pg_dump: reading user-defined text search dictionaries
pg_dump: reading user-defined text search configurations
pg_dump: reading user-defined foreign-data wrappers
pg_dump: reading user-defined foreign servers
pg_dump: reading default privileges
pg_dump: reading user-defined collations
pg_dump: reading user-defined conversions
pg_dump: reading type casts
pg_dump: reading table inheritance information
pg_dump: reading event triggers
pg_dump: finding extension members
pg_dump: finding inheritance relationships
pg_dump: reading column info for interesting tables
pg_dump: finding the columns and types of table "phrases"
pg_dump: finding default expressions of table "phrases"
pg_dump: finding the columns and types of table "users"
pg_dump: finding default expressions of table "users"
pg_dump: finding the columns and types of table "favorite_phrases"
pg_dump: finding the columns and types of table "favorite_users"
pg_dump: finding the columns and types of table "phrasebooks"
pg_dump: finding default expressions of table "phrasebooks"
pg_dump: finding the columns and types of table "phrasebooks_phrases"
pg_dump: flagging inherited columns in subtables
pg_dump: reading indexes
pg_dump: reading indexes for table "phrases"
pg_dump: reading indexes for table "users"
pg_dump: reading indexes for table "favorite_phrases"
pg_dump: reading indexes for table "favorite_users"
pg_dump: reading indexes for table "phrasebooks"
pg_dump: reading indexes for table "phrasebooks_phrases"
pg_dump: reading constraints
pg_dump: reading foreign key constraints for table "phrases"
pg_dump: reading foreign key constraints for table "users"
pg_dump: reading foreign key constraints for table "favorite_phrases"
pg_dump: reading foreign key constraints for table "favorite_users"
pg_dump: reading foreign key constraints for table "phrasebooks"
pg_dump: reading triggers
pg_dump: reading triggers for table "phrases"
pg_dump: reading triggers for table "users"
pg_dump: reading triggers for table "favorite_phrases"
pg_dump: reading triggers for table "favorite_users"
pg_dump: reading triggers for table "phrasebooks"
pg_dump: reading rewrite rules
pg_dump: reading large objects
pg_dump: reading dependency data
pg_dump: saving encoding = UTF8
pg_dump: saving standard_conforming_strings = on
pg_dump: saving database definition
pg_restore: [archiver] did not find magic string in file header
pg_dump: [custom archiver] WARNING: ftell mismatch with expected position -- fte
ll used
pg_dump: [custom archiver] WARNING: ftell mismatch with expected position -- fte
ll used
pg_dump: dumping contents of table favorite_phrases
pg_dump: [custom archiver] WARNING: ftell mismatch with expected position -- fte
ll used
pg_dump: dumping contents of table favorite_users
pg_dump: [custom archiver] WARNING: ftell mismatch with expected position -- fte
ll used
pg_dump: dumping contents of table phrasebooks
pg_dump: [custom archiver] WARNING: ftell mismatch with expected position -- fte
ll used
pg_dump: dumping contents of table phrasebooks_phrases
pg_dump: [custom archiver] WARNING: ftell mismatch with expected position -- fte
ll used
pg_dump: dumping contents of table phrases
pg_dump: [custom archiver] could not write to output file: Invalid argument
我需要在本地进行某种进一步的配置吗?如果重要的话,我正在使用tsquery
的自定义停用词词典,而不是在本机上本地设置...我怀疑这会是{{1}中的问题虽然......非常感谢任何帮助!
编辑:我刚尝试在桌面上运行此命令,其他本地站点已配置完所有内容。没有骨头。我得到了完全相同的结果。以下是所述本地计算机上pg_dump
的输出,以防万一:
which psql
答案 0 :(得分:9)
我写了pg:pull
和pg:push
命令。
pg:pull
和pg:push
都使用pg_dump
命令直接管道pg_restore
(source code)。不幸的是,截至2014年9月,这个问题的窗口pg:push,pull
存在问题。这些问题并非不可克服,所以如果你以后再来这个问题,请检查一下是否有问题。固定的。
env
命令used here和here我不认为是在Windows上,这就是为什么你不得不做PGUSER和PGPASSWORD的原因。但env
的原因是pg_dump
需要的环境变量与pg_restore
不同。
我用a stab at fixing that一次,使用popen独立设置命令,然后将它们连接在一起而不是使用管道。但是,我无法让它工作,不得不停下来。
我很乐意审核任何可以解决这个问题的修补程序,只需在提及heroku / heroku项目的拉取请求时提及我。
很抱歉我未能解决此问题:(
相反,在修复此问题之前,您可以直接单独使用pg_dump
和pg_restore
命令。它作为一个两步过程更加繁琐,并且必须查找远程凭据,但它可以完成工作。 gen_pg_*_command
方法中的关联来源显示了如何使用pg_dump
和pg_restore
。
答案 1 :(得分:0)
@will的答案在常规Heroku开发的情况下是完美的,但在私有空间的情况下失败。正如Heroku Postgres and Heroku Private Spaces :: External connections所述:
与我们的业余爱好,标准版和高级版的Heroku Postgres数据库不同,私人数据库无法通过本地计算机访问。
作为一种变通方法,您可以将数据库复制到非私有数据库,然后您可以将数据库转储为本地补偿。