当前使用版本(必填,否则不予处理)
mybatis-plus-boot-starter:3.4.2
该问题是如何引起的?(确定最新版也有问题再提!!!)
SELECT * FROM v_terminal t WHERE t.subscribe_key= 'ebe943711b7443089c698477db6def39' ;
一个单表查询SQL,subscribe_key有唯一索引,通过EXPLAIN分析索引已命中
重现步骤(如果有就写完整)
MybatisPlusConfig.java
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor paginationInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 分页插件
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
// sql性能规范
interceptor.addInnerInterceptor(new IllegalSQLInnerInterceptor());
// 防止全表更新与删除
interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());
return interceptor;
}
@Bean
public ConfigurationCustomizer configurationCustomizer() {
return configuration -> configuration.setUseDeprecatedExecutor(false);
}
}
TerminalMapper.java
@Mapper
public interface TerminalMapper extends BaseMapper<Terminal> {
@Select("SELECT * FROM v_terminal t WHERE t.`subscribe_key` = #{key};")
Terminal findBySubscribeKey(String key);
}
报错信息
Error querying database. Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: 非法SQL,SQL未使用到索引, table:v_terminal t, columnName:subscribe_key
The error may exist in com/example/mapper/TerminalMapper.java (best guess)
The error may involve com.example.mapper.TerminalMapper.findBySubscribeKey
The error occurred while executing a query
Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: 非法SQL,SQL未使用到索引, table:v_terminal t, columnName:subscribe_key]
Comment From: ls9527
数据库是什么类型? 如果是mysql的话, 用你应用程序的账号密码登录, 查看 SHOW INDEX FROM 表名; 是否能查到索引。
如果是其他类型的数据库,也是同样的道理,当前用户没有权限查看索引, 导致这个报错
Comment From: qmdx
up
Comment From: dch1314
up
Comment From: dch1314
https://ask.csdn.net/questions/7570473?answer=53595412