python 向数据库写数据,可以写一部分,但是之后就报2006错误
大概要写11万条数据,但是只写了100多条,然后就报错OperationalError:(2006,'MySQLserverhasgoneaway')...
大概要写11万条数据,但是只写了100多条,然后就报错
OperationalError: (2006, 'MySQL server has gone away') 展开
OperationalError: (2006, 'MySQL server has gone away') 展开
2个回答
展开全部
关于mysql为什么gone away我这里就不描述了。你有时间可以详细看一下教程,对你会有很大帮助的。
这里仅仅讲如何处理这件事情,从python程序员来说,如果没有mysql server的管理权限如何去处理。
建议是两个办法,第一是找到合适的时间点进行commit; 第二是进行出错处理。具体到你这个情况,我建议是写50条后,就主动发起一个commit;的mysql命令。写在你自己的mysql的语句后面。 很有可能,不用重新连接也可以解决这个问题。 第二就是当发生mysql gone away错误时,先尝试关闭cursor,再尝试关闭mysql连接,然后进行mysql的重新连接, cursor当然也去重新初始化,重新将刚才失败的语句进行写入。
如果正好是50条语句一起写入,还没有来得及commit就失败了,有可能需要将50条全部重新写入一次。
如果你用的是insert方法, 需要在insert后面加一个ignore,这样避免重复记录的产生。
如果遇到新的问题,再灵活处理。
这里仅仅讲如何处理这件事情,从python程序员来说,如果没有mysql server的管理权限如何去处理。
建议是两个办法,第一是找到合适的时间点进行commit; 第二是进行出错处理。具体到你这个情况,我建议是写50条后,就主动发起一个commit;的mysql命令。写在你自己的mysql的语句后面。 很有可能,不用重新连接也可以解决这个问题。 第二就是当发生mysql gone away错误时,先尝试关闭cursor,再尝试关闭mysql连接,然后进行mysql的重新连接, cursor当然也去重新初始化,重新将刚才失败的语句进行写入。
如果正好是50条语句一起写入,还没有来得及commit就失败了,有可能需要将50条全部重新写入一次。
如果你用的是insert方法, 需要在insert后面加一个ignore,这样避免重复记录的产生。
如果遇到新的问题,再灵活处理。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询