在“ <服务器名称=“>:<端口>”上与MySQL服务器的连接丢失,系统错误:10053已建立的连接被中止

时间:2019-01-15 19:19:15

标签: mysql

这是我的python代码的一部分,用于将从Sharepoint检索的数据插入MySQL数据库,它每10分钟运行一次。

cnx = mysql.connector.connect(user='user', password='pwd', host='CP-MSQL03',port='3306',database='datacenter')
cnx.autocommit=True
MySQL_cursor = cnx.cursor()


r = requests.get(url, headers=headers, params=params)
delete_data = []
for item in r.json()['d']['results']:
    id = item['Id']
    lot_No = item['LOT_No']
    start = datetime.strptime(item['START'], '%Y-%m-%dT%H:%M:%SZ')
    lbs = item['LBS']
    line_NAV = item['Line_No']['NAV_x0020_HS_x0020_LINE']
    rpo_No = item['RPO_No']['RPO_No']
    item_NO = item['RPO_No']['Item_No']
    mrt_No = item['RPO_No']['MRT_No']
    SQL_Insert = (
            "INSERT INTO datacenter.mrt_consumption_archive (Line_No, RPO_No, Item_No, MRT_No, LOT_No, Start_Time, LBS) "
            "VALUES('%s', '%s', '%s', '%s', '%s', '%s', %s);" % (
                line_NAV, rpo_No, item_NO, mrt_No, lot_No, start, lbs))
    MySQL_cursor.execute(SQL_Insert)
    delete_data.append(id)

这是我成功运行几个小时后得到的错误代码。

enter image description here

我的问题是,为什么会出现此错误?是防火墙问题吗?超时设置问题?我该如何解决? 而且,为什么在第一次失败后,我在所有重试中仍然遇到相同的错误?

2 个答案:

答案 0 :(得分:1)

连接下降,它发生了。防火墙,启用NAT的路由器等可能使它发生的次数比应有的多,但是这仍然不是您希望程序崩溃的原因。

因此,通常,在运行查询之前,它必须对连接进行测试并捕获所有连接异常。捕获时,重新启动连接。幸运的是,这是一个称为池的熟悉概念,并且已经可以通过连接器使用。

摘录自https://dev.mysql.com/doc/connector-python/en/connector-python-connection-pooling.html

  

要隐式创建连接池:打开连接并指定一个或多个与池相关的参数(pool_name,pool_size)。例如:

dbconfig = {
  "database": "test",
  "user":     "joe"
}

cnx = mysql.connector.connect(pool_name = "mypool",
                              pool_size = 3,
                              **dbconfig)

如果您只是出于某种原因从保持连接打开的角度进行查看,还可以设置持续时间短的keepalive(如果问题是网络设备不可靠,这可能就是您所需的所有解决方法)正在从其内存中的表清除连接)。如果可以解决网络问题,那是比自定义连接设置更好的方法。

答案 1 :(得分:0)

如果您的脚本成功运行了几个小时,我认为这可能是数据库配置的一个参数,那么请用以下语句检查配置,

SHOW GLOBAL VARIABLES where variable_name like'%time%';

也许连接很多或者会话超时,但是我很确定这是您的MySQL服务器问题