我在windows vista安装上运行MySQL 5.1。该表使用MyISAM,大约有1000万行。它用于存储用户在网站上发布的短信。
我正在尝试对其运行以下查询,
query = "select id, text from messages order by id limit %d offset %d" %(limit, offset)
其中limit设置为固定值(在本例中为20000),offset以20000为单位递增。
当offset = 240000时,此查询进入无限循环。此特定值而不是任何其他值。
我将此查询隔离到一个脚本中并运行它,并获得相同的结果。然后我尝试直接运行最后一个查询(使用offset = 240000),它工作正常!
然后我尝试直接在mysql客户端中执行相同的查询,以确保错误不在python数据库访问器模块中。所有查询都返回结果,但偏移量= 240000的结果除外。
然后我查看了mysql服务器日志并看到了以下内容。
[ERROR] C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld: Sort aborted
这可能意味着当我停止python进程(出于挫折)时,mysqld进程正在“排序”某些东西。当我查看my.ini文件时,我看到了很多MAX_ *选项。我目前正在尝试这些,但同时将它扔出去。
任何帮助表示赞赏!