gpt4 book ai didi

python - Django transaction.commit_on_success 不回滚事务

转载 作者:行者123 更新时间:2023-11-28 19:52:01 25 4
gpt4 key购买 nike

我正在尝试通过 the commit_on_success decorator 在 MySQL 上使用 Django 事务.根据文档,“如果函数引发异常,Django 将回滚事务。”但是,这似乎对我不起作用:

>>> @transaction.commit_on_success
... def fails():
... Site.objects.create(name="New Site", ip_address="127.0.0.1")
... raise ValueError("oh noes!")
...
>>> Site.objects.count()
2
>>> fails()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.6/site-packages/django/db/transaction.py", line 240, in _commit_on_success
res = func(*args, **kw)
File "<stdin>", line 4, in fails
ValueError: oh noes!
>>> Site.objects.count()
3
>>>

我很确定 MySQL 支持事务;我需要使用不同的表类型还是什么?

最佳答案

来自 http://docs.djangoproject.com/en/dev/ref/databases/ :

“默认引擎是 MyISAM [1]。MyISAM 的主要缺点是它目前不支持事务或外键。从好的方面来说,它是目前唯一支持全文索引和搜索的引擎。

“InnoDB 引擎是完全事务性的并且支持外键引用。”

关于python - Django transaction.commit_on_success 不回滚事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1214143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com