Django迁移不适用于Amazon Elastic Beanstalk上的RDS中的Postgress

时间:2016-07-20 17:53:37

标签: django django-models

我用两个新模型MyMap和CustomMap编辑了我的Django model.py。当我迁移本地数据库并运行本地服务器时,我可以通过shell或管理客户端修改记录。

部署到AWS环境后,当我尝试在example.com/admin/as_app/custommap /中添加MyMap或CustomMap时出现以下错误:

  

/ admin / as_app / custommap /

中的ProgrammingError      

关系“as_app_custommap”不存在

     

第1行:SELECT COUNT('*')AS“__count”FROM“as_app_custommap”

当我部署到弹性beanstalk时,所有迁移都会自动生成并运行。我可以通过ssh确认这样的EC2实例:

(venv)[root@ip-#### django_folder]# python manage.py makemigrations
No changes detected

我还确认我的更改实际上是在models.py中:

(venv)[root@ip-#### django_folder]# vi as_app/models.py

class MyMap(models.Model):
    name = models.CharField(default='', max_length=200, unique=True)
    def name_and_id(self):
        return self.name + " (" + str(self.pk) + ")"
    kml_file = models.FileField(upload_to='as_app/my_maps', blank=True, default='')

class CustomMap(models.Model):
    name = models.CharField(verbose_name='Map Name', default='', max_length=200, unique=True)
    def location(self):
        return u'<a href="' + settings.BASE_URL + u'map/custom_view/' + self.name + u'">' + settings.BASE_URL + u'map/custom_view/' + self.name + u'</a>'
    location.allow_tags = True
    widget1 = models.FileField(upload_to='as_app/custom_maps', blank=True, default='')
    widget2 = models.FileField(upload_to='as_app/custom_maps', blank=True, default='')
    widget3 = models.FileField(upload_to='as_app/custom_maps', blank=True, default='')
    widget4 = models.FileField(upload_to='as_app/custom_maps', blank=True, default='')
    widget5 = models.FileField(upload_to='as_app/custom_maps', blank=True, default='')
    widget6 = models.FileField(upload_to='as_app/custom_maps', blank=True, default='')
    widget7 = models.FileField(upload_to='as_app/custom_maps', blank=True, default='')
    widget8 = models.FileField(upload_to='as_app/custom_maps', blank=True, default='')
    widget9 = models.FileField(upload_to='as_app/custom_maps', blank=True, default='')
    widget10 = models.FileField(upload_to='as_app/custom_maps', blank=True, default='')

class ExternalData(models.Model):
    name = models.CharField(verbose_name='Data Name', default='', max_length=200, unique=True)
    location = models.URLField()
    def clickable_location(self):
        return u'<a href="' + self.location + u'">' + self.location + u'</a>'
    clickable_location.allow_tags = True 
...

但是,当我检查数据库时,我可以看到模型仍然缺失:

(venv)[root@ip-#### django_folder]# python manage.py inspectdb

from __future__ import unicode_literals
from django.db import models

class AsAppExternaldata(models.Model):
    name = models.CharField(unique=True, max_length=200)
    location = models.CharField(max_length=200)
    class Meta:
        managed = False
        db_table = 'as_app_externaldata'
...

最后通过shell我可以重现我在管理客户端收到的错误并确认其他模型工作正常:

(venv)[root@ip-#### django_folder]# python manage.py shell
In [1]: import django

In [2]: from as_app.models import *

In [3]: django.setup()

In [4]: ExternalData
Out[4]: as_app.models.ExternalData

In [5]: MyMap
Out[5]: as_app.models.MyMap

In [6]: ExternalData.objects.all() 
Out[6]: []

In [7]: MyMap.objects.all() 
/opt/python/run/venv/local/lib/python2.7/site-packages/django/db/backends/utils.pyc in execute(self, sql, params)
     62                 return self.cursor.execute(sql)
     63             else:
---> 64                 return self.cursor.execute(sql, params)
     65
     66     def executemany(self, sql, param_list): 

ProgrammingError: relation "as_app_mymap" does not exist
LINE 1: ...app_mymap"."name", "as_app_mymap"."kml_file" FROM "as_app_my...

我尝试使用建议{ - 3}}的--fake标记进行迁移。

还尝试按照建议here手动指定我的迁移运行sqlmigrate。

我尝试过很多搜索与之相关的事情:

  

django inspectdb没有显示模型

......和类似的短语但没有运气。

让我知道是否还有其他任何有助于尝试或展示的内容。

0 个答案:

没有答案