当前使用版本 3.4.3.4~3.5.1

该问题是如何引起的?(确定最新版也有问题再提!!!)

条件中加上返回函数 比如 select database()就会报错,把该sql放到数据库中单独执行正常执行。 去除 and table_schema = (select database()) 这句或者将select database()改为 ’databaseName‘就正常了

重现步骤(如果有就写完整)

mapper.xml中写如下代码

      <select id="selectTableByName" parameterType="String" >
        select table_name, table_comment, create_time, update_time
        from information_schema.tables
        where table_comment <![CDATA[ <> ]]> ''
        and table_schema = (select database())
        and table_name = #{tableName}
    </select>

报错信息

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Failed to process, Error SQL: select table_name, table_comment, create_time, update_time
        from information_schema.tables
        where table_comment   <>   ''
        and table_schema = (select database())
        and table_name = ?
### Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Failed to process, Error SQL: select table_name, table_comment, create_time, update_time
        from information_schema.tables
        where table_comment   <>   ''
        and table_schema = (select database())
        and table_name = ?

    at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:96)
    at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441)
    at com.sun.proxy.$Proxy110.selectList(Unknown Source)
    at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224)
    at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:166)
    at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)
    at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148)
    at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)
    at com.sun.proxy.$Proxy111.selectTableByName(Unknown Source)
    at .....impl.SysTableServiceImpl.selectDbTableList(SysTableServiceImpl.java:67)

个人猜测是因为升级jsqlparser导致的问题,因为mybatis plus 3.4.2都是正常的

Comment From: waerly

经测试为 租户插件导致的影响,解决方法过滤租户即可