当前使用版本(必填,否则不予处理)

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