2011-07-05 147 views
3

我在遷移django的Sentry應用時遇到了這個錯誤。我用mysql獲取SOUTH和Django遷移的錯誤

! Since you have a database that does not support running 
! schema-altering statements in transactions, we have had 
! to leave it in an interim state between migrations. 

! You *might* be able to recover with: = DROP TABLE `sentry_groupedmessage` CASCADE; [] 
    = DROP TABLE `sentry_message` CASCADE; [] 

我應該怎麼辦

+1

按照說明進行操作? –

+0

所以你的意思是MySQL不支持他所說的,是MySQL不好,我不能用它在Django的小項目 –

回答

2

你的問題是,遷移失敗,和MySQL沒有對事務的支持,所以南不知道在該狀態下表是英寸

如何從這點可以恢復它的唯一方法是:

  • 檢查表和它們的遷移,其狀態檢查(這列改變等)
  • 備份兩個表(將其清除)
  • 刪除表。
  • 使用migrate命令重新創建表。
  • 如果遷移不成功呢,用南去所在的表你傾倒出的數據的模式相匹配的狀態
  • 導入轉儲
  • 遷移再次
0

附加托馬斯回答;如果您在重新運行遷移期間爲密鑰content_type_id收到任何IntegrityError,還要刪除專門爲應用程序模型創建的權限。該錯誤將類似於如下:

IntegrityError: (1062, "Duplicate entry '209-view_<model name>' for key 'content_type_id'")

在這種情況下,從表中刪除auth_permission這些權限。您可以執行like搜索您的模型名稱以查找所有權限(查看,添加,更改,刪除)。上述

Select * from auth_permission where codename like '%<model name>'

的命令將讓你所有的權限模型,你可以得到自己的ID,然後刪除(或者乾脆寫一個連接)。