【发布时间】:2016-11-14 18:53:31
【问题描述】:
Python 2.7 版 Django 版本 1.9.7
我在 heroku 上创建了一个 Django 应用程序。我无法将 heroku 服务器正确连接到 migrate。过去我在本地完成了所有makemigrations,然后将它们推送到服务器。它过去曾奏效。现在我想我会选择在服务器端进行所有迁移,因为我根本没有在本地运行这个应用程序。
我刚刚在models.py 中为应用“main”创建了一个新模型:
from __future__ import unicode_literals
from django.db import models
class InstagramPhotos(models.Model):
imageId = models.IntegerField()
userId = models.IntegerField()
likes = models.IntegerField()
captionText = models.CharField(max_length=200)
image = models.ImageField()
将更改推送到服务器后,我运行了它,输出如下:
heroku run python manage.py makemigrations main
在 ⬢ 上运行 python manage.py makemigrations main glacial-beach-50253... up, run.8354 'main' 的迁移:
0001_initial.py: - 创建模型 InstagramPhotos
看起来不错吧?然后我尝试migrate,正如你所知,它实际上会在数据库中创建表:
heroku run python manage.py migrate
在 ⬢ glacial-beach-50253... 上运行 python manage.py migrate, run.7556 要执行的操作:应用所有迁移:auth, contenttypes, admin, sessions 运行迁移:没有迁移到 应用。 您的模型具有尚未反映在 迁移,因此不会应用。运行“manage.py makemigrations” 进行新的迁移,然后重新运行“manage.py migrate”以应用 他们。
无论我尝试重新运行makemigrations 和migrate 多少次,它似乎仍然无法启动。除了不可能以这种方式在heroku服务器上操作之外,不知道为什么会发生这种情况?我肯定需要在本地做makemigrations 并推送吗?
仅供参考,我只是在settings.py 中定义了默认的 sqlite3 数据库。
【问题讨论】:
-
不要在 Heroku 上运行 makemigrations。在本地执行,提交结果并推送,然后在 Heroku 上运行 migrate。
-
谢谢,我还不能这样做,因为它希望我在本地进行迁移,而不需要更新我的所有依赖项。我猜想使用新版本的 Django,他们需要 Pillow,还没有想到我会尝试在安装了依赖项的服务器上执行所有这些操作,当然没问题。我现在明白了。
-
如果您可以在本地运行应用程序,您将如何进行任何开发?
-
是的,我解决了依赖问题。不是我真的做不到,而是我还没有做到。从我的角度来看,我可以在服务器上运行迁移似乎是合理的。不知道为什么它仍然无法正常工作,但是可以。我不在本地服务器上运行它的原因是我正在使用一个 3rd 方 API,它重定向到一个公共 URL 进行身份验证,所以这在我的本地机器上实际上不起作用。但无论如何,谢谢你,我只是在本地进行了迁移并推动了他们。然后迁移在服务器上运行。 @丹尼尔罗斯曼
-
@jeffery_the_wind stackoverflow.com/questions/65739543/… 你能回答类似的问题吗?
标签: python django database heroku