超出“range optimizer max mem\u size”的内存容量

6kkfgxo0  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(1173)

我用python连接mysql,如下所示:

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

所以我不是一次获取所有的结果,而是一行一行地获取,它占用的内存更少,工作速度更快。通常它工作正常,但我有一个奇怪的错误:
3170,“超出了'range optimizer max mem\ u size'8388608字节的内存容量。未对此查询进行范围优化。
这很奇怪,因为结果是大约500000行,其中不是最大的一行,而且我正在逐行处理,没有将它提取到ram中,而且我以前从未遇到过这个错误。
我有一个大的'id in(*id's list)'表达式在里面,但如果查询太长,我会得到一个操作错误,我处理几个id块,从来没有问题。

iqjalb3h

iqjalb3h1#

设置全局范围\优化器\最大\内存\大小=0;
0表示无限内存,您也可以在此处以字节为单位给出限制,如8388608

相关问题