在django south迁移中遇到问题 - TransactionManagement错误

8 浏览
0 Comments

在django south迁移中遇到问题 - TransactionManagement错误

我在应用Django South迁移时遇到了问题:

像往常一样,在成功执行schemamigration后,我执行了迁移命令

python manage.py migrate webapp

日志控制台输出:

正在为webapp执行迁移:
- 正在向0020_auto__add_example迁移。
> webapp:0020_auto__add_example
TransactionManagementError:事务管理块以未决的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=()
正在为webapp执行迁移:
- 正在向0020_auto__add_example迁移。
> webapp:0020_auto__add_example
(0.002) CREATE TABLE ROLLBACK_TEST (X INT); args=()
TransactionManagementError:事务管理块以未决的COMMIT/ROLLBACK结束。

0
0 Comments

在使用Django South进行迁移时,有用户遇到了一个问题,即出现了"Stuck in a django south migration - TransactionManagement error"的错误。经过分析,发现了这个问题出现的原因和解决方法。

问题出现的原因是在数据库中存在一个名为'ROLLBACK_TEST'的表,而该表并非用户自己创建的。该表只能通过Django、South或者可能是Amazon的内部进程创建。当用户取消了一个迁移操作时,'ROLLBACK_TEST'表没有被删除,导致出现错误。解决方法就是通过删除该表来告诉South一切正常。

需要注意的是,如果用户的数据库用户没有删除权限,可能会遇到这个问题。所以在解决问题时,用户需要确保数据库用户具有删除权限。

以上就是关于"Stuck in a django south migration - TransactionManagement error"问题出现的原因和解决方法的整理。希望对遇到类似问题的用户有所帮助。

0
0 Comments

问题出现的原因是在Django 1.6和South 1.0上的MySQL实例中。通过打开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;

0
0 Comments

在进行Django South迁移时遇到了问题,错误提示为"TransactionManagement error"。经过一番思考与尝试,终于找到了问题的原因和解决方法。

问题的原因是数据库用户权限不足。具体来说,我使用的是MySQL数据库,而我的数据库用户没有足够的权限来执行必要的操作,导致迁移过程中出现了错误。

为了解决这个问题,我对数据库用户进行了权限分配。我给予了该用户以下权限:ALTER、CREATE、DELETE、DROP、INDEX、INSERT、SELECT、UPDATE。经过这些权限的赋予,问题得到了解决。现在,我能够正常进行Django South迁移,并且一切运行良好。

总结一下,当遇到"TransactionManagement error"错误时,首先要检查数据库用户的权限。确保该用户具有足够的权限来执行必要的操作。对于MySQL数据库,可以使用ALTER、CREATE、DELETE、DROP、INDEX、INSERT、SELECT、UPDATE这些权限来解决该问题。

0