python - 超出“范围优化器最大内存大小”的内存容量
问题描述
我正在使用 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, "'range optimizer max mem_size' 的内存容量超过了 8388608 字节。没有为此查询进行范围优化。
这很奇怪,因为结果大约是 500 000 行,并不是最大的,而且我正在逐行处理而不将其提取到 RAM 中,而且我以前从未遇到过这个错误。
我有一个很大的“ID in (*ID's LIST)”表达式,但如果查询太长,我会收到 OperationalError,我处理了几块 ID,从来没有问题。
解决方案
设置全局范围_优化器_max_mem_size = 0;
0 表示无限内存,您也可以在此处以字节为单位进行限制,例如 8388608
推荐阅读
- java - 使用 Web 应用程序单点登录
- heroku - Heroky 部署 - 错误:缺少必需的标志
- python-3.x - Anaconda 3.2019 版本的 anaconda 命令提示符访问被拒绝错误
- javascript - 用于 nodejs REST Api 的 Keycloak 策略实施
- testing - TestCafe - fixture.beforeEach 钩子中的错误
- c# - Entity Framework 6.2 不支持数据库上的 json 数据类型首先来自 MySql
- python - 如何在 DJANGO 的自定义 ADMIN 页面中将用户“id”和用户“个人资料”更新为超级用户
- blazor - ViewModel 概念在 Blazor 中还存在吗?
- ruby-on-rails - 为什么我的 rails 容器没有连接到我的 postgres 容器?
- python - 使用 sqlalchemy 连接到 mssql 数据库时遇到问题