Heroku 教程错误运行 python manage.py syncdb 更新本地数据库
Posted
技术标签:
【中文标题】Heroku 教程错误运行 python manage.py syncdb 更新本地数据库【英文标题】:Heroku tutorial error running python manage.py syncdb to update local database 【发布时间】:2012-12-04 01:47:36 【问题描述】:这个问题之前已经被问过并回答了here,我理解我为什么会收到错误的原因,但是我仍然不清楚给出的答案中的解决方案。我应该添加哪些代码或更改才能使其正常工作?我是否需要更改
DATABASES['default'] = dj_database_url.config()
在我的设置中?本教程对此不是很清楚。感谢您的帮助。
【问题讨论】:
【参考方案1】:要么设置并使用带有 DATABASE_URL 配置变量的 virtualenv
,要么使用 DATABASE_URL=postgres:///databasename <how you'd normally run your program>
运行您的程序
【讨论】:
您应该在您的项目主页中创建一个名为 .env 的文件(即 PROCFILE 旁边)并在其中添加 DATABASE_URL(例如 DATABASE_URL=postgres:///databasename)。然后,您应该使用“foreman run python manage.py syncdb”通过工头运行 syndb。 Foreman 将在运行命令之前设置环境变量。【参考方案2】:最终起作用的是添加:
import dj_database_url
DATABASES['default'] = dj_database_url.config(default='postgres://<user>:<password>@localhost:5432/<name>')
而不仅仅是
import dj_database_url
DATABASES['default'] = dj_database_url.config()
如教程所述。然后在尝试运行时
python manage.py runserver
还是报错
ImportError: DLL load failed: %1 is not a valid Win32 application.
然后我发现我需要使用的 Stickpeople 构建是 64 位而不是教程让我使用的 32 位,而 64 位构建是:
easy_install http://www.stickpeople.com/projects/python/win-psycopg/psycopg2-2.4.5.win-amd64-py2.7-pg9.1.3-release.exe
我不知道这是否是最好的方法,但为了使用 64 位版本,我从头开始。现在它终于起作用了。希望这也可以用来帮助其他也被卡住的人。 heroku 教程有很多漏洞。
【讨论】:
真的,您不应该在 settings.py 文件中硬编码 DATABASE_URL。这是因为这些细节会在开发和生产等环境之间有所不同。它们应该通过环境变量设置,然后 DATABASES['default'] = dj_database_url.config() 将起作用,因为它会找到定义。请参阅我对威尔的回答的评论,了解正确的做法。以上是关于Heroku 教程错误运行 python manage.py syncdb 更新本地数据库的主要内容,如果未能解决你的问题,请参考以下文章
没有运行 Web 进程错误 - 在 Heroku 上部署 Django
Python Flask Web API [Heroku]:它在本地运行,但在部署时显示应用程序错误
为啥我在运行时出现整数精度错误:heroku run python manage.py migrate
错误 R10(引导超时)Heroku 与 python 脚本