6

Django South Migration を適用する際に問題が発生しています:

いつものように、スキーマ移行が成功した後に移行コマンドを実行しました

python manage.py migrate webapp

ログコンソール:

Running migrations for webapp:
 - Migrating forwards to 0020_auto__add_example.
 > webapp:0020_auto__add_example
TransactionManagementError: Transaction managed block ended with pending COMMIT/ROLLBACK

エラーは、特定の移行とは関係ありません。前に戻って別の移行を試みると、同じメッセージが表示されます。

編集。これはクエリのログです。

(0.005) SELECT `south_migrationhistory`.`id`, `south_migrationhistory`.`app_name`, `south_migrationhistory`.`migration`, `south_migrationhistory`.`applied` FROM `south_migrationhistory` WHERE `south_migrationhistory`.`applied` IS NOT NULL ORDER BY `south_migrationhistory`.`applied` ASC; args=()
Running migrations for webapp:
 - Migrating forwards to 0020_auto__add_example.
 > webapp:0020_auto__add_example
(0.002) CREATE TABLE ROLLBACK_TEST (X INT); args=()
TransactionManagementError: Transaction managed block ended with pending COMMIT/ROLLBACK
4

6 に答える 6

15

同様の問題に遭遇しました。

  • MySQL 5.6.13 (Amazon RDS 上)
  • ジャンゴ==1.5.4
  • MySQL-python==1.2.4
  • 南==0.8.2

ここでほぼすべての可能な修正を行い、数え切れないほどのGoogle検索を運がありませんでした.

データベース スキーマを調べたところ、作成していない「ROLLBACK_TEST」という名前のテーブルがスキーマの一部でした。

その謎のテーブルを削除すると、移行は問題なく実行されました。

このテーブルは、Django、South、またはおそらく Amazon の内部プロセスを介してのみ作成された可能性があります。

于 2013-10-22T10:05:22.667 に答える
4

MySQL インスタンスの Django 1.6 と South 1.0 で同じ問題が発生しました。django.db.backends ロガーをオンにした後、移行が次の SQL ステートメントでスタックしていることに気付きました。

DEBUG (0.003) CREATE TABLE ROLLBACK_TEST (X INT); args=None

そこで、データベースをチェックしたところ、ROLLBACK_TEST テーブルが十分に見つかりました。それを削除すると問題が解決しました:

$ manage.py dbshell
mysql> DROP TABLE ROLLBACK_TEST;
于 2014-10-25T17:32:17.550 に答える
3

私は同じ問題を抱えていて、しばらく頭をぶつけていました。私の (MySQL) データベース ユーザーが十分な権限を持っていないことが判明しました。私が割り当てたもの:ALTER、CREATE、DELETE、DROP、INDEX、INSERT、SELECT、UPDATEをユーザーに割り当てたところ、すべてうまくいきました。

于 2013-09-19T09:55:10.857 に答える
0

私が同じ問題に遭遇したとき、私の問題は多かれ少なかれdjangoに関連していました。私は説明する。

コンソールのさまざまなタブで作業していました。1 つは Django シェルで使用してモデルをテストし、別のタブで移行を実行しました。シェル タブで整合性エラーが発生しました。そのため、問題を解決するか (このスレッドを参照)、タブを閉じるまで、移行タブのエラーは解決しませんでした。前の回答が指摘したように、これはDBに関連するものでしたが、DBのせいではありません。

于 2014-02-02T13:49:16.707 に答える
0

誰かに役立つ可能性があるので、私が抱えていた問題に対する答えを書いています。

しばらくデバッグした後、問題が django に関連していないことがわかりました。これは、データベースとそれをホストする仮想マシンの問題でした。

データベース マシンを再起動したところ、移行が機能するようになりました。

于 2013-08-26T11:36:33.843 に答える