超出了“范围优化器最大mem_size”的存储容量

时间:2018-10-20 17:27:36

标签: python mysql sql python-3.x

我正在像这样用Python连接MySQL:

    db = MySQLdb.connect(host="localhost", user="****", passwd="****", db="****", charset='utf8')
    db.query(sql)
    result = db.use_result()
    event_data = result.fetch_row(maxrows=1, how=1)
    if event_data:
         event_data=event_data[0]

所以我不是一次获取所有结果,而是一行一行地获取,它使用更少的内存并且工作更快。 通常它可以正常工作,但出现一个奇怪的错误:

  

3170,“范围优化器的最大内存容量为8388608字节   超出了mem_size”。此查询未进行范围优化。

这很奇怪,因为结果大约是50万行,不是最大的行,而且我正在逐行处理而不将其提取到RAM中,而且我以前从未遇到过此错误。

我里面有一个很大的“(* ID的LIST)中的ID”表达式,但是如果查询时间太长,我会遇到一个OperationalError错误,我会处理几块ID,这从来没有问题。

1 个答案:

答案 0 :(得分:0)

SET GLOBAL range_optimizer_max_mem_size = 0;

0表示无限内存 您还可以在此处以8388608这样的字节为单位给出限制