我正在像这样用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,这从来没有问题。
答案 0 :(得分:0)
SET GLOBAL range_optimizer_max_mem_size = 0;
0表示无限内存 您还可以在此处以8388608这样的字节为单位给出限制