【问题标题】:Database integrity errors when deploying Python(2.7)/Django(1.5) app on Heroku在 Heroku 上部署 Python(2.7)/Django(1.5) 应用程序时出现数据库完整性错误
【发布时间】:2015-08-14 17:57:04
【问题描述】:

这些天我正在通过开发 reddit 克隆来学习 Python(2.7)/Django(1.5)。克隆几乎完成并且在我的本地环境(db = sqlite3)中完美运行。但是当我尝试在 Heroku (db = postgres) 上托管同样的东西时,事情就出错了。

具体来说,网络应用程序仍在加载,但 login、logout 和 cmets 部分正在抛出错误(我使用的是 django -registrations-redux、django-cmets 和南)。

由于应用已经上线,您可以直接到这里查看错误痕迹:

我的所有文件,包括 requirements.txt 等,都可以在这里找到:https://github.com/mhb11/unconnectedredditapp

让我感到困惑的是,这个东西在本地仍然可以完美运行,但在 Heroku 上却不行。我假设我可能捏造了南方移民。但是,我整天都在删除我的 Heroku 应用程序并设置新的应用程序。每次我在新应用程序上运行 syncdb 命令时,在设置超级用户凭据后 Django-auth 系统安装和表创建后都会收到以下错误:

DatabaseError: relation "links_userprofile" does not exist
LINE 1: ...rofile"."user_id", "links_userprofile"."bio" FROM "links_use...

我用heroku run python2.7 manage.py syncdb --migrate 跟进它(即syncdb 和一起迁移),这次迁移没有报错。但无论如何,该应用程序仍然给出了我在开始时指出的数据库错误。

我想我应该在我的本地设置中卸载 South,并为一切使用旧的同步数据库。

此时,我的 heroku 部署可能出现大量问题,因此我了解您可能无法为我提供准确的解决方案。但是用你所有的想法打我 - 我愿意尝试一切,因为这个东西现在已经被我困住了超过 48 小时。救命!

注意:如果您最终检查了克隆 (https://salty-ridge-5419.herokuapp.com/),请原谅不是英文的文本标签。


在执行git push heroku master 之后运行 syncdb 命令 的错误跟踪:

(unconnectedreddit)has@has-VirtualBox:~/Desktop/uncreddit$ heroku run python2.7 manage.py syncdb
Running `python2.7 manage.py syncdb` attached to terminal... up, run.8792
CHECKING_HEROKU!
ON_HEROKU!
Syncing...
Creating tables ...
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_groups
Creating table auth_user_user_permissions
Creating table auth_user
Creating table django_content_type
Creating table django_session
Creating table django_site
Creating table django_admin_log
Creating table django_comments
Creating table django_comment_flags
Creating table south_migrationhistory

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'u8919'): mhb
Email address: bhs@bhs.com
Password: 
Password (again): 
DatabaseError: relation "links_userprofile" does not exist
LINE 1: ...rofile"."user_id", "links_userprofile"."bio" FROM "links_use...

【问题讨论】:

  • 在初始迁移时不创建超级用户是否有效?
  • 登录/注销和评论部分仍然出现错误。这一次,当被问及超级用户时,我选择了“否”。 Syncdb 继续运行,没有出现我在问题中发布的“LINE 1:...”错误。结尾行改为:Not synced (use migrations): - links - registration 接下来我运行heroku run python2.7 manage.py migrate。最后是:You have no migrations for the 'registration' app. You might want some. 这就是我所做的一切。
  • 从上面继续,然后我输入:heroku run python2.7 manage.py schemamigration registration --initial。我收到:+ Added model registration.RegistrationProfile 然后我输入:heroku run python2.7 manage.py migrate registration。我收到:You have no migrations for the 'registration' app. You might want some. 错误仍然存​​在。
  • 您必须在本地创建迁移,将它们提交到 git,然后将代码推送到 Heroku。
  • 同意。但是一旦在 Heroku 上,我需要运行哪些同步命令?一个是heroku run python2.7 manage.py syncdb。还有其他人吗?

标签: python django heroku django-south heroku-postgres


【解决方案1】:

问题已通过运行heroku config:set ON_HEROKU=1 解决。在我的 settings.py 文件中,我在本地使用 sqlite3,但在 Heroku 上恢复为 postgres。 在运行syncdb之前将ON_HEROKU设置为1,因此,解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 2021-11-27
    • 2021-03-25
    • 2018-02-09
    • 2018-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多