最近DBA发现总是有大事务报警,最终排查到是因为django默认在查询之前执行了
set autocommit=0
原来,mysql如果开了set autocommit=0,那么所有的语句一定是在一个事务里
所以打算关闭该设置,查django官方文档,可以通过以下两种方式不进行这个设置
1.settings.py文件添加
DISABLE_TRANSACTION_MANAGEMENT = True
2.settings.py db部分添加
'OPTIONS':{
'autocommit':True
}
但是都不起作用,于是被逼无奈不得不修改了django源码,
#/python2.7/lib/python2.7/site-packages/django/db/backends/mysql/base.py 第387行附近添加
cursor.execute('set autocommit=1')
cursor.execute('SET SQL_AUTO_IS_NULL = 0')
问题得以解决,略挫的方法