MySQL 的默认设置下当一个连接的空閑时间超过8小时后,MySQL 就会断开该连接而 c3p0 连接池则以为该被断开的连接依然有效。在这种情况下如果客户端代码向 c3p0 连接池请求连接的话,连接池就会把已经失效的连接返回给客户端客户端在使用该失效连接的时候即抛出异常
解决这个问题的办法有三种:
修改Mysql的mysql事务实现隔离级别
后面添加(读取提交内容):
保存后重启mysql服务:
读取嘚是同一个数据时, 容易发生的问题有:
不可重复读(Non-repeatable read):在一个mysql事务实现的两次查询之中数据不一致,这可能是两次查询过程中间插入了一个mysql事务实现更新的原有的数据
幻读(Phantom Read):在一个mysql事务实现的两次查询中数据笔数不一致,例如有一个mysql事务实现查询了几列(Row)数据而另一个mysql事务实现却在此时插入了新的几列数据,先前的mysql事务实现在接下来的查询中就会发现有几列数据是它先前所没有的。
django2.X後,自主更改框架与mysql会话的mysql事务实现等级为READ-COMMITTED(读取提交内容), 如要求级别如此, 则不需要更改.
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。