2015-04-03 110 views
2

我正在使用Django 1.8rc1。我對某些型號進行了更改,並遇到了一個問題,因此我決定進行備份並重新創建所有型號。我處於早期階段,因此完全重建數據庫不成問題。Django 1.8rc1遷移不重新創建表

在我的應用程序/文件夾遷移刪除所有遷移文件後,我做了makemigrations,這表明了三個新表格必須創建:

Migrations for 'track': 
    0001_initial.py: 
    - Create model Milestone 
    - Create model Project 
    - Create model Task 

但隨後遷移不做創建表格步驟出於某種原因。

$ python manage.py migrate 
Operations to perform: 
    Synchronize unmigrated apps: messages, staticfiles 
    Apply all migrations: auth, sessions, track, admin, contenttypes 
Synchronizing apps without migrations: 
    Creating tables... 
    Running deferred SQL... 
    Installing custom SQL... 
Running migrations: 
    No migrations to apply. 

我認爲刪除遷移文件會刪除創建的錶的歷史記錄,並強制Django重新運行CREATE TABLE語句。任何想法爲什麼不是?

+2

您是否刪除了整個數據庫? django_migrations表中是否有條目? – 2015-04-03 19:47:50

+1

啊,謝謝你把我指向django_migrations表。我清除了那個,然後不得不刪除並重新創建數據庫,並且工作。現在,我在繼承時遇到了與MRO不同的問題..可能必須將這個問題作爲一個單獨的問題... – trpt4him 2015-04-03 19:55:50

回答

0

這裏的變通方法:

從項目中刪除源文件夾中的文件db.sqlite3並再次運行遷移。


有時,當您修改模型並運行遷移時,django並不能順利應用。不是一個問題,你可以在下次使用南方。

1

對我來說,分辨率是刪除有問題的應用程序的遷移目錄,(我就是這樣做的情況下,它是需要的mkdir遷移),然後重新運行:

python manage.py makemigrations 
python manage.py migrate 

這偉大的工作,我可以看到表格已創建。

+0

謝謝 - 如果我需要徹底刪除遷移文件,此命令對我有幫助:'find。 -path「*/migrations/* .py」-not -name「__init__.py」-delete' – trpt4him 2015-09-26 14:11:54

0

Django將在django_migrations中創建歷史記錄。您需要先清理它,然後使用這些命令生成表格。

因此,嘗試去你的數據庫,並找到django_migrations表。刪除所有具有app等於您的應用程序名稱的行。例如 ID應用程序名稱應用 20軌0001_initial 2016年1月13日2時55分23秒

然後做一個makemigrations & migrate應該工作。