mySQL数据库链接错误
- 错误1
- 错误2
- 长链接短连接
应用场景需要一直访问mySQL数据库,遇到如下错误:
错误1
释放已经释放的数据库链接conn.,或者,操作已经释放的数据库链接conn.或者失去链接后再操作数据库都可能会报这个错误
aise err.InterfaceError("(0, ‘’)")
pymysql.err.InterfaceError: (0, ‘’)
错误2
pymysql.err.OperationalError: (2013, ‘Lost connection to MySQL server during query ([Errno 110] Connection timed out)’)
解决:解决:查看了好多博客文档,都说是数据库链接的问题。mySQL内置了ping()方法,能在数据库链接丢失时再次链接数据库。可以在合适的地方借助try expect 语句使用.ping()方法重新链接。
图截至pyMySQL的官方文档:https://pymysql.readthedocs.io/en/latest/modules/connections.html#pymysql.connections.Connection.ping
参考文档:https://www.cnblogs.com/xuwei1/p/10820516.html
长链接短连接
可以通过长短链接的方式链接数据库,短连接就是每次链接数据库并操作完之后就释放该链接。长连接就是使用完在较长的时间内不释放,最长的持续时间是8小时,过了时间,链接自动断开。所以程序中要设定链接检查机制,如果断开就重新链接一下。
长短链接各有自己的应用场景(疑惑长连接在数据库发生变化时能够获取刷新后的数据库么?还没有测试过)
长短链接的链接碰撞、资源占用等问题参考下面文档。
参考文档:https://www.cnblogs.com/panchanggui/p/9963815.html
长连接断开之后重链接检查:
https://blog.csdn.net/weixin_43354181/article/details/85894383