【问题标题】:Heroku tutorial error running python manage.py syncdb to update local databaseHeroku 教程错误运行 python manage.py syncdb 更新本地数据库
【发布时间】:2012-12-04 01:47:36
【问题描述】:

这个问题之前已经被问过并回答了here,我理解我为什么会收到错误的原因,但是我仍然不清楚给出的答案中的解决方案。我应该添加哪些代码或更改才能使其正常工作?我是否需要更改

 DATABASES['default'] =  dj_database_url.config()

在我的设置中?本教程对此不是很清楚。感谢您的帮助。

【问题讨论】:

    标签: python django postgresql heroku python-2.7


    【解决方案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() 将起作用,因为它会找到定义。请参阅我对威尔的回答的评论,了解正确的做法。
    猜你喜欢
    • 2013-07-21
    • 2014-02-04
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 2016-01-05
    • 2013-09-15
    • 1970-01-01
    相关资源
    最近更新 更多