当尝试使用python和mysqldb将一堆数据导入到mysql表中时,我遇到了以下错误“2006 – mySQL Server已经消失”,然后我无法在脚本中重新连接。
我在iniitially重复使用连接对象(由conn.commit()描绘),然后当我第一次遇到这个exception,如果我通过调用MySQLdb.connect()创build一个新的连接,这个新的连接也失败同样的例外。
这个错误不会立即发生,我可以将相当数量的数据抽入数据库,但是在我插入了几千条logging之后忠实地发生,所以大致上一旦数据库提交了某个事务量,它总是像这样下降。
如果我重新运行脚本,而不重新启动数据库服务器。 然后从停止的位置恢复,抽出一些数据,然后再次翻转。
在build议更改超时时间之前,有没有人知道为什么我在初始故障后无法build立新的连接? – 即使我尝试了几次,每次之间等待几秒钟。
(顺便说一下,我运行的是Windows 7,MySQL服务器5.1.48,mysqldb 1.2.3.gamma.1,python 2.6)
这可能与您保持与数据库的持续连接并可能超时有关。
看到这里: q1和q2
另外,你能提供一些你已经尝试过的代码,但实际上并不工作吗?
而我们在这个时候,数据库连接可能很昂贵,但是也许你可以每批都获得一个新的(假设你可以把数据分成批)
我实际上已经做了一个关于这个问题的博客post 。 您需要增加max_allowed_packet大小:
# The MySQL server [mysqld] port = 3306 socket = /tmp/mysql.sock skip-external-locking key_buffer_size = 256M max_allowed_packet = 64M <====== table_open_cache = 256 sort_buffer_size = 1M read_buffer_size = 1M read_rnd_buffer_size = 4M myisam_sort_buffer_size = 64M thread_cache_size = 8 query_cache_size= 16M # Try number of CPU's*2 for thread_concurrency thread_concurrency = 8