6

我在应用 django 南迁移时遇到了麻烦:

与往常一样,我在模式迁移成功后执行了 migrate 命令

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 上)
  • Django==1.5.4
  • MySQL-python==1.2.4
  • 南==0.8.2

我在这里经历了几乎所有可能的修复,并通过无数的谷歌搜索,运气为零。

我查看了数据库架构,我没有创建名为“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 回答
1

我遇到了同样的问题,对我来说,解决方案只是将我的 sqlitedevelopment.db文件的适当权限授予执行python manage.py migrate webapp命令的用户。我拥有该文件www-data,因此无法处理该文件。

于 2013-09-03T12:45:10.550 回答
0

我正在写我遇到的问题的答案,因为它可能对某人有用。

经过一段时间的调试,我发现问题与 django 无关。这是数据库和托管它的虚拟机的问题。

我重新启动了数据库机器,迁移现在正在工作。

于 2013-08-26T11:36:33.843 回答
0

当我遇到同样的问题时,我的问题或多或少与 django 有关。我解释。

我在控制台中使用不同的选项卡。一个与 django shell 一起使用来测试我的模型,并在另一个选项卡中运行迁移。我在 shell 选项卡中遇到了完整性错误。因此,直到我解决了问题(请参阅此线程)或关闭选项卡,迁移选项卡中的错误仍然存​​在。正如前一个答案所指出的,这与数据库有关,但与数据库无关。

于 2014-02-02T13:49:16.707 回答