最近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')

问题得以解决,略挫的方法

相关文章:

  • 2021-07-18
  • 2021-09-07
  • 2021-12-21
  • 2021-11-08
  • 2022-12-23
  • 2021-06-22
  • 2022-01-14
  • 2020-03-17
猜你喜欢
  • 2021-08-03
  • 2022-01-13
  • 2021-07-28
  • 2022-12-23
相关资源
相似解决方案