将 Django 开发数据库 (.sql3) 迁移到 Heroku
Posted
技术标签:
【中文标题】将 Django 开发数据库 (.sql3) 迁移到 Heroku【英文标题】:Migrate Django development database (.sql3) to Heroku 【发布时间】:2015-04-23 07:05:52 【问题描述】:如何将他们的 Django .sql3 开发数据库迁移到 heroku?
每个 here 和 here 我试过:heroku pg:psql --app sblic < database.sql3
但我的 Django 管理员没有显示新的上传(即使在 syncdb/migrate/ 或 collectstatic 之后
【问题讨论】:
嗯:docs.aws.amazon.com/AmazonS3/latest/UG/… 将数据库和代码移动到 Heroku 的最简单方法就是通过 git push。 您的问题显示了一个 SQLite3 数据库。这与显示如何推送 Postgres 数据库的示例有什么关系?我认为您需要重新陈述您的问题。 @Brandon 在 Heroku 中,默认数据库是 Postgres,在本地环境中使用 django 默认是 SQLite3。 【参考方案1】:Heroku 命令行工具使用 psql
二进制文件。您必须在本地开发机器上安装 PostgreSQL 才能使 psql 可用。来自(文档)[https://devcenter.heroku.com/articles/heroku-postgresql#pg-psql]:
您必须在系统上安装 PostgreSQL 才能使用 heroku pg:psql。
实际上,您可以继续将 SQLite 数据库与 Heroku 一起使用,但不建议这样做,因为如果您将其重新部署到另一个 dyno,它将被您的本地副本重写。建议将数据迁移到 psql,如https://devcenter.heroku.com/articles/sqlite3
所述【讨论】:
很好,但我有一个 .sql3 数据库,所以我需要先转换为 postgres...【参考方案2】:也许有办法直接将sql3文件上传到Heroku,但我选择了最确定的路径(将本地sql3 db转换为postgre db和upload a dump of postgre db to Heroku via pgbackups tool):
-
Create a dump of your sql3 database as a json file
安装 PostgreSql 并在
Path
环境变量 create a postgre user and database 中安装 bin
目录(或者只是计划使用您在安装 postgresql 时创建的初始超级用户帐户)
用reference to your newly created postgre database 更新您的settings.py
(注意,'HOST'
可能需要设置为'localhost'
,'user'
是您的postgre 用户登录名)
运行 python manage.py syncdb
启动新的 postgre 数据库
可选:如有必要,truncate your postgre db of contenttypes
load your dump from step 1(如果您有夹具问题,see here)
现在您有一个工作的 postgre 本地数据库。 To migrate, first create a postgre dump
将您的 postgre 转储发布到可通过 URL 访问的位置(例如上一个链接中建议的 drop box 或 amazon s3)。
执行pgbackups restore command, referencing your dump url
您的 heroku 应用现在应该引用本地数据库的内容。
【讨论】:
这总是给出夹具错误。即使在倾倒时添加了--natural-foreign --natural-primary
之类的参数。 @DanielRoseman 先生,您知道解决方法吗?请帮忙。以上是关于将 Django 开发数据库 (.sql3) 迁移到 Heroku的主要内容,如果未能解决你的问题,请参考以下文章
Django 迁移:sqlite3 开发数据库、Amazon Elastic Beanstalk 和 Amazon RDS postgresql 实时数据库