3

Django で Sentry アプリを移行中にこのエラーが発生しました。私はmysqlを使用しています

 ! 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; []

私は何をすべきか

4

2 に答える 2

3

問題は、移行が失敗したことと、MySQL がトランザクションをサポートしていないことです。そのため、South はテーブルがどの状態にあるかを知りません。

この時点から回復できる唯一の方法は次のとおりです。

  • テーブルを検査し、移行の状態 (変更された列など) を確認します。
  • 両方のテーブルをバックアップします (ダンプします)
  • テーブルを削除します。
  • migrate コマンドを使用してテーブルを再作成します。
  • 移行がまだ成功していない場合は、south を使用して、テーブルがダンプされたデータのスキーマと一致する状態に移動します。
  • ダンプをインポートする
  • 再度移行
于 2011-07-05T19:49:09.120 に答える
0

トーマスの答えに追加。IntegrityError移行の再実行中にキーのいずれかを取得している場合content_type_idは、アプリケーションのモデル用に特別に作成されたアクセス許可も削除します。エラーは次のようになります。

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 を取得して削除 (または単純に結合を記述) できます。

于 2014-04-13T16:41:31.193 に答える