2012-11-08 44 views
1

問題聲明:我想刪除數據庫中的某些表。刪除django使用的數據庫中的表

錯誤獲取:一個外鍵約束失敗

詳情:

我有一個預先存在-(不Django的models.py填充)數據庫。我正在使用Django。我用這個數據庫來創建Django站點。在django中創建一個站點時,我已經給出了它的名稱和適當的設置。 models.py中沒有創建模型。

執行命令後:

蟒manage.py執行syncdb

Django的加入下表到該數據庫:

| auth_group |

| auth_group_permissions |

| auth_permission |

| auth_user |

| auth_user_groups |

| auth_user_user_permissions |

| django_content_type |

| django_session |

| django_site |

我想刪除所有這些表。

我試過這個查詢;

DROP TABLE table_name;

但MySQL的提示,錯誤顯示:

ERROR 1217(23000):無法刪除或更新父行,外鍵約束失敗

有一些方法可以讓我只在上面提到的表中保留我的預先存在的表保持不變?

謝謝。

回答

2

兩種可能性:

  1. 有具有FK參考
  2. InnoDB的內部數據字典是不同步的與MySQL一個(在MySQL術語「數據庫」)另一個模式中的表。

通過在丟棄失敗後執行「SHOW ENGINE INNODB STATUS」,您可以看到它是哪個表(它們中的一個,無論如何)。

如果事實證明是後者,我會轉儲並恢復整個服務器,如果可以的話。

MySQL 5.1及以上版本會在錯誤信息中給你帶有FK的表名。

,並嘗試這也

請參考這個問題stackoverflow

禁用外鍵檢查

DISABLE KEYS 

請務必SET FOREIGN_KEY_CHECKS=1;

+0

謝謝你的回答。我跟着那個問題。 – Navid

+0

如果您對答案感到滿意,歡迎您點擊剔號並接受它 – Ghostman

0

而不是使用默認的InnoDB存儲引擎,你可以的輕鬆配置django使用MyISAM。在後一種情況下,由於關係,它不會限制您執行各種操作。兩者都有其積極和消極的一面。

+0

謝謝您的答覆。其實我是django的新手。我需要閱讀關於MyISAM。我會閱讀有關它。 – Navid

+0

MyISAM與django無關。它是MySql使用的存儲引擎 –