我正在使用python库MySQLdb的python脚本上传大量的数据到本地的MySQL数据库。 当我使用一个数据样本时,一切正常,并上传。 现在我正在使用我的所有数据(大约300000行分成12000个文本文件),并收到以下错误消息:
"OperationalError: (2003, ""Can't connect to MySQL server on 'localhost' (10055)"")"
在它崩溃的地方,它已经上传了17231行信息。 我在台式机上使用Python 2.7,Win7 64和MySQL 5.1.53。 我使用WAMP安装并使用PhpMyAdmin查看数据。 我用来上传数据的一个例子如下:
# upload data def updateDB(db, table, values): db = MySQLdb.connect (host = 'localhost', user = 'root', passwd = '', db = db) cursor = db.cursor() print str(values) cursor.execute(makeSQLHeader(table, values), values) db.commit() db.close()
这对testing数据工作正常,文本文件结构是相同的我所有的数据。 解决这个问题有什么好的策略?
我的两个想法是,要么加载需要很长时间,而是因为超时而断开连接。 在这里find的 python有一些autoreconnect的方法这里是mysql中的相关超时variables: wait_timeout和interactive_timeout
第二个想法,从评论中的讨论看起来是正确的。 你可能通过打开每个文件的连接来达到mysql的连接限制。
尝试打开一个连接并运行testing(当你这样做,你可能会超时,取决于需要多长时间)。
这可能是你遇到了最大允许数据包的限制。 你可以在my.cnf中设置这样的东西:
max_allowed_packet=12M
有关更多信息,请参阅MySQL参考指南中的这篇文章 。