Python版本2.7 Django版本1.9.7
我在heroku上创建了一个Django应用程序。我无法将heroku服务器正确地迁移到migrate
。过去我在本地完成所有的makemigrations
,然后将它们推送到服务器。过去这样做是有效的。现在我想我会选择在服务器端完成所有的迁移,因为我根本不在本地运行这个应用程序。
我刚刚在models.py
中为app '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 on glacial-beach-50253... up,run. 8354“main”上的迁移:
0001初始值. py:- 创建模型Instagram照片
看起来没问题吧?然后我尝试migrate
,如您所知,它实际上会在DB中创建表:
heroku run python manage.py migrate
运行python manage.py在glacial-beach-50253上迁移... up,run。7556要执行的操作:应用所有迁移:身份验证、内容类型、管理、会话运行迁移:**没有要应用的迁移。**您的模型具有尚未反映在迁移中的更改,因此不会应用这些更改。请运行“manage.py makemigrations”以进行新的迁移,然后重新运行“manage.py migrate”以应用这些更改。
无论我试着重新运行makemigrations
和migrate
多少次,它似乎仍然没有拿起它。不知道为什么会发生这种情况,除了它只是不可能在heroku服务器上操作这种方式?我一定要做makemigrations
本地和推?
仅供参考,我只是在settings.py
中定义了默认的sqlite3 DB。
5条答案
按热度按时间eqqqjvef1#
我也有类似的问题。
我刚
ssh
进了龙六的测功器:heroku run bash
(从您的heroku应用程序文件夹ofc)然后运行所有的迁移和makemigration命令与createsuperuser如果需要。工程与sqlite和postgre为我。
1dkrff032#
运行
makemigrations
和migrate
,然后推送到远程存储库。ntjbwcob3#
1.在本地运行这些命令
pythonmanage.py,,,Python管理器. py迁移
2.提交代码
3.把它推给Heroku大师
1.运行
heroku run python manage.py makemigrations,,,, heroku run python manage.py migrate
您的问题应该已解决
wqsoz72f4#
我在部署到Heroku时两次遇到同样的错误。在列出app目录下的文件时,我发现db.sqlite3文件丢失了,这是django创建sql表所必需的。虽然它会自动在本地创建文件,但在运行migrate命令时,它并没有在Heroku上创建。
此处有两个选项:
1.在heroku上的app目录下创建db.sqlite3文件
1.在本地运行“python manage.py migrate”以创建db.sqlite3并将其推送到heroku存储库
g6ll5ycj5#
最近我遇到了一个类似的错误,最后发现我错误地忽略了init.py文件。如果migrations文件夹中没有这些文件,migrate命令就无法找到迁移文件并执行它们。