2013-05-09 104 views
2

我有一臺使用django的服務器。我試圖將我的數據庫從sqlite3切換到mysql。以前一切正常工作與sqlite3。但是,當我使用mysql和做django mysql syncdb不會在models.py中創建表

python manage.py syncdb 

我沒有得到任何錯誤,但models.py中指定的表沒有創建。僅創建下列表格:

[[email protected] prototype]$ python manage.py syncdb 
Syncing... 
Creating tables ... 
Creating table auth_permission 
Creating table auth_group_permissions 
Creating table auth_group 
Creating table auth_user_user_permissions 
Creating table auth_user_groups 
Creating table auth_user 
Creating table django_content_type 
Creating table django_session 
Creating table django_site 
Creating table django_admin_log 
Creating table south_migrationhistory 

任何人都知道爲什麼?

+0

看到答案:http://stackoverflow.com/a/27204663 – Rafiq 2014-11-29 17:29:18

回答

5

它看起來像你正在使用南。通常情況下,South會禁止在syncdb中創建大多數表格,並且您可能會首先運行南遷移來創建它們。這是南方人可以跟蹤您的表的狀態,並應用您擁有的任何特殊遷移規則,甚至最初。

另一種可能性是,您沒有在設置文件中的INSTALLED_APPS變量中列出所有應用程序。

+0

是的,你是對的。這是因爲南方的。我重置南部數據庫,然後又做了一個執行syncdb。有效。謝謝! – zhengwx 2013-05-09 16:18:47

3

您已安裝南部。

當您運行python manage.py syncdb它同步所有非南方託管的應用程序。

運行python manage.py migrate來同步其他應用程序。

這是一個教程我跑我的一些同事通過(官南文檔是更深入,我得到了15分鐘,讓他們在南部和生產):https://gist.github.com/fyaconiello/2423447

+0

是啊,這就是問題所在。我想到了。謝謝! – zhengwx 2013-05-09 16:21:55

0

這可能是也可以說你從繼承的對象模型類,而不是從models.Model

該表將不會被創建。並且沒有錯誤將引發

0

我找到了另一種解決方案:

  1. 創建另一個數據庫,例如DB2
  2. 改變你在設置DATABASES['default']指向此DB
  3. 最新的Django版本只運行蟒蛇manage.py遷移

這將創造新的和明確的DB結構

  • 您需要將所需的表,爲MySQL:ALTER table db1.table_name RENAME db2.table_name
  • 那一切,感謝

    相關問題