陷入django南迁移 - TransactionManagement错误

时间:2013-08-26 10:32:02

标签: python django transactions django-south

我在申请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

6 个答案:

答案 0 :(得分:15)

我遇到了类似的问题。

  • MySQL 5.6.13(在Amazon RDS上)
  • 的Django == 1.5.4
  • 的MySQL-蟒== 1.2.4
  • 南== 0.8.2

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

我查看了数据库模式,我没有创建名为'ROLLBACK_TEST'的表是模式的一部分。

一旦我删除了那个神秘的表,迁移就完美无缺。

此表只能通过Django,South或可能是亚马逊的内部流程发起,因为没有其他任何人可以访问。

答案 1 :(得分: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;

答案 2 :(得分:3)

我遇到了同样的问题,并且正在敲打我的脑袋一段时间。 事实证明我的(MySQL)数据库用户没有足够的权限。 我分配了:ALTER,CREATE,DELETE,DROP,INDEX,INSERT,SELECT,UPDATE给用户,一切正常。

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

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

我重新启动了数据库计算机,现在正在进行迁移。

答案 5 :(得分:0)

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

我正在使用控制台中的不同标签。一个与django shell一起用于测试我的模型,在另一个选项卡中我运行迁移。我在shell选项卡中遇到了完整性错误。因此,在我解决问题(see this thread)或关闭选项卡之前,迁移选项卡中的错误仍然存​​在。正如前面的回答所指出的那样,这与DB有关 - 但不是DB的错误。

相关问题