2013-05-12 53 views
1

我刚刚使用MySQL作为数据库首次部署了django应用程序。在开发中,我使用sqlite3和south进行迁移。django - manage.py生产中的错误

我想我要用python manage.py syncdb然后python manage.py migrate初始化数据库。然而,当我运行python manage.py syncdb在生产的第一次,我收到以下错误:

DatabaseError: relation "utils_message" does not exist LINE 1: ...sage"."message_type", "utils_message"."text" FROM "utils_mes...

什么可能我会丢失?它可能是某种循环依赖吗?

我INSTALLED_APPS设置是这样的:

INSTALLED_APPS = (
    'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 
    'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 
    'south', 'django.contrib.admin', 'mainapp', 'employerprofile', 'applicantprofile', 
    'companies', 'postings', 'utils', 'searchjobs', 'comments', 'projectapp', 
    'cart', 'applications', 'packages', 'feedback', 'cvbank', 'staffpostings', 
    'logs', 
    # Uncomment the next line to enable admin documentation:      
    # 'django.contrib.admindocs',              
) 
+0

你是否在MySQL中创建了数据库(命名为settings.py'DATABASES ['default'] ['NAME'])? – stalk 2013-05-12 09:51:55

+0

是的,数据库存在,并且django db用户拥有它的所有权利。 – krm 2013-05-12 10:02:34

+2

你的数据库是否包含旧的表格模式? Django无法更新模式(即:在已经同步的现有模型上添加新字段,这与使用./manage syncdb时不可能),它只能从头创建(可以使用South迁移和更新旧模式) – 0xBAADF00D 2013-05-12 10:22:21

回答

0

解决的问题。这是由模型之间的依赖造成的。

我做了Message一个grep和发现,在postings应用模型的字段中utils应用作为其默认值,即依赖于Message模型的实例:

from utils.models import Message 
... 
default_message = Message.objects.get(message_type='application-receipt-message').text 
... 
class Posting(models.Model): 
    .... 
    receipt_message = models.TextField(default=default_message) 
    ... 

所以我将default_message更改为空字符串,python manage.py syncdb后跟python manage.py migrate,并没有遇到任何其他问题。