2012-07-13 76 views
2

我在我的Django項目中有以下2個應用程序。一個應用程序(播放器)具有引用其他應用程序(團隊)的ForeignKey。Django models.ForeignKey外鍵約束

應用1 - 播放器/ models.py

class Player(models.Model): 
    name = models.CharField(max_length=100) 
    team = models.ForeignKey(Team) 

應用2 - 團隊/ models.py

class Team(models.Model): 
    name = models.CharField(max_length=100) 

問題#1 - 似乎一切都正常工作,但是當我嘗試運行manage.py reset teams我收到以下錯誤:

Error: Error: users couldn't be reset. Possible reasons: 
* The database isn't running or isn't configured correctly. 
* At least one of the database tables doesn't exist. 
* The SQL was invalid. 
Hint: Look at the output of 'django-admin.py sqlreset users'. That's the SQL this command wasn't able to run. 
The full error: (1217, 'Cannot delete or update a parent row: a foreign key constraint fails') 

我確定我所有的表都是InnoDB。我見過的人建議使用SET FOREIGN_KEY_CHECKS=0作爲一個解決方法,但我不知道如何最好地使用這個manage.py rest

問題#2 - 當我做一個mysqldump的,我不能沒有運行到恢復我的MySQL數據庫錯誤。我的基本程序如下:

  1. 轉儲我的分貝。

    mysqldump --user=root --password=pass --result-file=MYBACKUP.SQL --compact MYDB

  2. 刪除數據庫,並創建一個新的具有相同的名稱。

  3. 恢復我的分貝。

    mysql -u root -p MYDB < MYBACKUP.SQL

就是這樣。當我第一次嘗試恢復時,它給了我這個錯誤 錯誤1005(HY000)在第12行:無法創建表'MYDB.auth_group_permissions'(errno:150)

當我嘗試恢復第二次(和後續)的時間,它使一行更遠,但它給了我這個錯誤: 錯誤1050(42S01)在行3:表'auth_group'已存在

我認爲這些錯誤必須與外國關鍵約束,但我不知道如何解決它。

我知道這是一口,但任何意見將不勝感激。如果有的話,我會在明天發佈我的發現。

在此先感謝!

+0

有你'蟒蛇manage.py syncdb'? – mariusnn 2012-07-13 03:29:00

+0

你應該看看南一旦你已經修復這個 – 2012-07-13 07:33:24

+0

@mariusnn是的,我可以'syncdb'罰款,並使用管理控制檯來管理一切。 – markhops 2012-07-13 13:16:06

回答

0

問題2的解決方案 - 所以我的轉儲然後恢復我的數據庫的問題與我如何使用mysql轉儲 - --compact標誌導致問題。

這條線......

mysqldump --user=root --password=pass --result-file=MYBACKUP.SQL --compact MYDB

...應該是...

mysqldump --user=root --password=pass --result-file=MYBACKUP.SQL MYDB