2013-05-12 52 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,並沒有遇到任何其他問題。