Segmentation fault
1.OS version:CentOS release 6.5 (Final) MySQL version:5.7.16-log
2.error
2017-03-10 14:41:26 18622 [Note] 第1æ¥: 对SQLè§£æä¼åä¹åå¾å°çSQL:select count(1) AS COUNT(1) from (mydb.archive a left join mydb.archive_detail ad on((a.id = ad.archive_id))) where (a.user_id = 231)
2017-03-10 14:41:26 18622 [Note] 第2æ¥ï¼å¼å§è§£æwhereä¸çæ¡ä»¶:(a.user_id = 231)
2017-03-10 14:41:26 18622 [Note] show index from archive
2017-03-10 14:41:26 18622 [Note] show table status like 'archive'
2017-03-10 14:41:26 18622 [Note] select count(*) from ( select user_id from archive FORCE INDEX( PRIMARY ) order by id DESC limit 4) a where (a.user_id = 231)
2017-03-10 14:41:26 18622 [Note] 第3æ¥ï¼è¡¨archiveçè¡æ°:9,limitè¡æ°:4,å¾å°whereæ¡ä»¶ä¸(a.user_id = 231)çéæ©åº¦:4
2017-03-10 14:41:26 18622 [Note] 第4æ¥ï¼å¼å§è§£æjoin onæ¡ä»¶:a.id=ad.archive_id
2017-03-10 14:41:26 18622 [Note] 第5æ¥ï¼å¼å§éæ©é©±å¨è¡¨,ä¸å
±æ1个åé驱å¨è¡¨
2017-03-10 14:41:26 18622 [Note] explain select * from archive
Segmentation fault
3.table ddl
CREATE TABLE archive (
id bigint(20) NOT NULL AUTO_INCREMENT,
signed_summary_id bigint(20) DEFAULT NULL,
user_id bigint(20) DEFAULT NULL,
tilte varchar(200) DEFAULT NULL,
archive_type int(11) DEFAULT NULL,
archive_date date DEFAULT NULL,
created1 bigint(20) DEFAULT NULL,
created2 varchar(50) DEFAULT NULL,
created_date datetime DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=270 DEFAULT CHARSET=utf8mb4;
CREATE TABLE archive_detail (
id bigint(20) NOT NULL AUTO_INCREMENT,
archive_id bigint(20) DEFAULT NULL,
archive_type int(11) DEFAULT NULL,
archive_type_name varchar(20) DEFAULT NULL,
content varchar(2000) DEFAULT NULL,
pic varchar(200) DEFAULT NULL,
voice varchar(2000) DEFAULT NULL,
created_date datetime DEFAULT NULL,
service_remark int(5) DEFAULT '0',
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=420 DEFAULT CHARSET=utf8mb4;
同问
请问这个问题解决了吗, 我也碰到同样的问题
关注这个问题
同问
工具基于mysql5.7的bug吧,5.6没问题
同5.7也出现了
这个问题我简单修改下代码可以不出现这个错误了:
把322行左右的下面文本: if ((row = mysql_fetch_row(result))) { result_set_count = atoi(row[EXPLAIN_ROWS]); } 修改为: if ((row = mysql_fetch_row(result))) { if (row[EXPLAIN_ROWS]!=NULL) { result_set_count = atoi(row[EXPLAIN_ROWS]); } }
好的,谢谢!
From: empo007 Date: 2017-12-05 14:39 To: Meituan-Dianping/SQLAdvisor CC: Subscribed Subject: Re: [Meituan-Dianping/SQLAdvisor] Segmentation fault (#3) 这个问题我简单修改下代码可以不出现这个错误了: 把322行左右的下面文本: if ((row = mysql_fetch_row(result))) { result_set_count = atoi(row[EXPLAIN_ROWS]); } 修改为: if ((row = mysql_fetch_row(result))) { if (row[EXPLAIN_ROWS]!=NULL) { result_set_count = atoi(row[EXPLAIN_ROWS]); } } — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.
关注这个问题
修改哪个文件?
出现这个问题是因为mysql 5.7 的执行计划默认返回的字段和5.7 以前的不同。工具不能正常判断出执行计划范围的影响行数,所以报错。按照empo007 的方法改,虽然不出错了,但是也失去了针对join的进一步分析的功能。
同样出现错误,持续关注中。Mysql环境 5.7
同出现此问题 mysql5.7 上面改代码的方式验证有效