我正在尝试将生产 Heroku 数据库导入到我的开发机器中。
我的本地数据库是 PostgreSQL。
首先,我将转储从 Heroku 导出到我的机器
curl -o latest.dump `heroku pgbackups:url`
然后,我尝试删除本地数据库rake db:drop
然后我使用再次创建空数据库rake db:create
.
我遇到的问题是当实际尝试将转储导入数据库时
psql -d app_development -U myusername -f mydumpfile.sql
我开始看到这样的错误
psql:latest.dump:24: ERROR: syntax error at or near "PGDMP"
LINE 1: PGDMP
^
psql:latest.dump:28: ERROR: syntax error at or near ""
LINE 1: INCREMENT BY 1
^
psql:latest.dump:36: ERROR: syntax error at or near ""
LINE 1: id integer NOT NULL,
^
psql:latest.dump:40: ERROR: syntax error at or near ""
LINE 1: INCREMENT BY 1
^
psql:latest.dump:45: ERROR: syntax error at or near ""
LINE 1: id integer NOT NULL,
^
psql:latest.dump:49: ERROR: syntax error at or near ""
LINE 1: INCREMENT BY 1
...
psql:latest.dump:1601: invalid command \S4???(?̭?A?|c?e0<00K?A?}FϚ?????A(??~?t?I?????G(? K???l??k"?H?ȁ?ͲS?,N*?[(@??a5J??j}
psql:latest.dump:1602: invalid command \??k???|??w???h?
psql:latest.dump:1603: invalid command \=??????o?h?
psql:latest.dump:1609: invalid command \????^.?????????E???/-???+??>#?ؚE?.2)Ȯ&???? g????"7},_??]?:?f?Tr|o???)?p????h?KO?08[Rqu???|3?cW?ڮ?ahbm??H?H8??$???2?a?-أ
psql:latest.dump:1613: invalid command \D!qVS???L??*??R??I!???
psql:latest.dump:1614: invalid command \??-?}Q
psql:latest.dump:12565: ERROR: invalid byte sequence for encoding "UTF8": 0xb0
知道这是怎么回事以及如何解决吗?
你看到错误是因为 psql 试图解释 SQL 查询,而你实际上给了他一个压缩转储 https://devcenter.heroku.com/articles/pgbackups#importing_from_a_backup(这就是heroku 使用的)。
虽然你无法读取转储,pg_restore -O latest.dump
为您提供有效的 SQL,您可以通过管道传输到 psql,但简单的解决方案如下:
pg_restore -O -d app_development latest.dump
Notes :
- Use
-O
因为您可能不使用远程 heroku postgres 数据库的随机用户名。
- Heroku 不建议使用水龙头 https://devcenter.heroku.com/articles/taps但我不知道这到底有多大风险。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)