我正在尝试使用heroku db:push
将我的本地postgresql数据库上传到Heroku提供的5Mb共享数据库。一切正常但数据库不会反映我在本地数据库上的内容。有些记录会重复,而其他记录则会丢失。所以,如果我在本地数据库中有三条记录:
cat, dog, banana
当我使用db:push时我最终得到:
dog, dog, cat
我的数据库大约有100,000个记录,总共3-4 MB。知道如何解决这个问题吗?
我的database.yml:
发展:
adapter: postgresql
encoding: unicode
database: myDB
username: myUname
password: myPw
host: localhost
port: 5432
reconnect: true
生产:
adapter: postgresql
encoding: unicode
database: myDBname
username: myUname
password: myPW
host: ec2-23-21-140-215.compute-1.amazonaws.com
我从
获取的所有这些数据库信息heroku config
使用主机,用户名等提供数据库URL
答案 0 :(得分:0)
Push本质上是替换已经存在的表的数据的副本(它不会触及不属于推送的表)。
我不确定你为什么会遇到你遇到的问题,但是你可以重置你的数据库并推动获得你想要的一份干净的副本:
heroku pg:reset
heroku db:push
答案 1 :(得分:0)
虽然方便,但使用tap(db:push使用的)可能无法准确复制数据,并且可能会因较大的传输而遇到错误。要从生产系统导入或导出数据,我们强烈建议您使用pgbackups。
https://devcenter.heroku.com/articles/import-data-heroku-postgres#from_postgres
https://devcenter.heroku.com/articles/pgbackups#importing_from_a_backup