mysql 插入报错 100213 20:22:16 [ERROR] /usr/libexec/mysqld: Sort aborted

问题描述:

我用的一台server进行插入报错 24G内存 4核CPU
程序抛出的异常为:java.sql.SQLException: Unexpected eof found when reading file '/home/tmp/MYvFQFtT' (Errcode: 0)
我查看mysql的日志,错误信息为:100221 10:03:53 [ERROR] /usr/libexec/mysqld: Sort aborted

对应的my.cnf配置如下:
character-set-server = utf8

key_buffer = 3072M
max_allowed_packet = 512M
table_cache = 1024
query_cache_size = 1024M
sort_buffer_size = 3072M
read_buffer_size = 1024M
read_rnd_buffer_size = 1024M
myisam_sort_buffer_size = 1024M
net_buffer_length = 128M
open_files_limit = 10240
tmp_table_size=1024M
max_tmp_tables=100
thread_stack =512M
join_buffer_size=1024M

max_connections = 250
max_user_connections = 200
wait_timeout = 259200
interactive_timeout= 259200
net_read_timeout = 500
net_write_timeout = 600

是不是和我的配置有关 以前这种操作是不会报错的。最近修改了几个参数后就开始报错,但是我改回去依旧是同样的情况

1.检查/home/tmp/还有多少空间
2.在执行sql常刷新,看看是否是查询时占用了临时空间导致查询失败。
3.你的数据量有多大?尝试减小点试试。
4.如果确实是临时空间不够用,在my.cnf文件中可以修改temp目录。

以前也遇到过类似问题,后来是换机器导的数据。第4点不确定能否解决。

得看看程序中sql是怎么写的,单独执行试试,感觉跟mysql配置关系不大。

手动运行报啥错?看上去可没啥问题。
这样测试
先执行
select B.MONTH_ID,T.PRODUCT_CATEGORY_ID,T.PRODUCT_MENTION_ID,T.DRIVER_CATEGORY_ID,T.DRIVER_MENTION_ID,B.FORUM_ID,sum(T.POSMENTIONS)/(sum(T.POSMENTIONS)+sum(T.NEGMENTIONS)) as P_S_R , B.POST_ID

from tmp_Daily_B_POST B inner join T_POST2TM_Product_Driver T on T.POST_ID=B.POST_ID group by B.MONTH_ID,T.PRODUCT_CATEGORY_ID,T.PRODUCT_MENTION_ID,T.DRIVER_CATEGORY_ID,T.DRIVER_MENTION_ID,B.FORUM_ID, B.POST_ID

再执行扑面的select,看看哪部分的数据有问题。