事务的使用方法,更多用法参考官网transactions
def viewfunc(request):
# 默认autocommit 既生成一条sql就提交到数据库
do_stuff()
with transaction.atomic():
# This code executes inside a transaction.
do_more_stuff()
错误:
事务执行中遇到错误没有正常回滚,既默认的autocommit
原因产生在数据库上。找django的原因找了半天。。(背锅了)
最终检查控制台输出发现有这么一句话
Some non-transactional changed tables couldn't be rolled back
原因大致为:mysql数据表的引擎默认 为"MyISAM"不支持事务
解决:打开mysql配置文件 找到default-storage-engine=
支持 INNODB 引擎模式。修改为 default-storage-engine=INNODB 即可。
如果 INNODB 模式如果不能启动,删除data目录下ib开头的日志文件重新启动。