#项目背景
项目框架采用的是S+S+Mybatis Plus,项目过程中原使用的mysql数据库,后来需要换成SQLServer数据库,代码需要适配,基本上跟业务代码无关,只修改持久层代码进行适配。

#MybatisPlus的坑

这个问题,报的错是说SQL执行的时候,在子查询中使用了Order By,
具体执行SQL语句如下:

可以百度一下得到结果

https://www.cnblogs.com/chenwenbin/articles/7125376.html

根据上面链接的解决方案可以知道,解决这个SQL语句的问题只需要在子查询中加入一个top 100 percent即可,但是代码中我们是使用mybatisPlus的条件构造器和MybatisPlus通用方法BaseManager泛型方法中的持久层框架代码进行查询的,如下图

这里产生的问题是,userManager和airManager所使用的都是同一个方法,却产生了不同的查询,
userManager先进行了查询selectList_COUNT:

airManager却是进行了查询selectList_COUNT:

才报的错,2个select count明显不相同。

#具体修改这个坑

因为调用了通用方法的原因,所以修改报错不能就意思地加入个top 100 percent,找到根因才能去解决这个问题,
思考之后,发现问题所在,userManager的selectList_COUNT查询里头是count了所有表字段的,
而airManager的selectList_COUNT查询里头是count了一部分字段,SQL语句中列举出来在子查询之中的那些,问题定位到,如下图:

xml配置文件中描述表字段,表字段enable是个保留字,根据网上百度可以得知enable是MySQL和Oracle数据库的保留字,但是反编译了mybatisplus的源码class文件,跟踪代码后发现,代码逻辑处理把enable当做保留字处理了,所以才导致了上述一系列问题。
到此,问题产生的原因搞定。

使用MybatisPlus从MySQL切换到SQLServer的坑相关推荐

  1. MybatisPlus处理Mysql的json类型

    MybatisPlus处理Mysql的json类型 1.在数据库表定义JSON字段: 2.在实体类加上@TableName(autoResultMap = true).在JSON字段映射的属性加上@T ...

  2. mybatis-plus和mysql

    mybatis-plus and mysql 持续更新中 ...... 文章目录 mybatis-plus and mysql 1. 乐观锁和悲观锁的介绍 2. mybatis(乐观锁) 3. 分页插 ...

  3. 用MyBatis-Plus连接MySQL数据库

    MyBatis-Plus(官网地址:https://mp.baomidou.com/)是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 1.添加 ...

  4. mysql8 index255_详解关于MySQL 8.0走过的坑

    今天手贱更新了MySQL 8.0 第一个问题:Navicat连接不上数据库 安装的mysql为localhost:3306,配置一切默认,安装后打开Navicat 12 新建连接,直接报错 authe ...

  5. mysql迁移数据目录,这个坑你遇到过吗?

    mysql数据库在存储过程中,随着存储数据越来越多,有时会遇到存储的磁盘空间不足的情况,于是需要更换存储路径. 迁移过程主要有以下几步: 1.关闭mysql服务: 2.更改/etc/my.cnf下da ...

  6. Linux MySQL数据库冷迁移采坑记录

    Linux MySQL数据库冷迁移采坑记录 当前文件系统已满,需要将MySQL默认路径迁移到新文件系统下. MySQL数据库文件原位置:/var/lib/mysql . 要移动至:/mysql/mys ...

  7. MySQL 8.0踩的坑

    MySQL 8.0踩的坑 前言 一.MySQL 8.0 删除了password() 二.MySQL 8.0以后修改root密码 三.创建新用户并更改权限 总结 前言 在安装了新的Ubuntu21.04 ...

  8. MySQL 8.0踩的坑(3)

    MySQL 8.0踩的坑(3) Mysql远程连接报错 Mysql远程连接报错 原因:mysql 8.0 默认使用 caching_sha2_password 身份验证机制 之前版本的mysql使用的 ...

  9. 【docker】dbclient远程访问非本机数据库(mysql,oracle,postgres,sqlserver/mssql),测试远程数据库连通性

    一.docker_dbclient远程连接mysql 1.将拉下来的mysql镜像跑起来 docker run -idt docker_dbclient:1.0 /bin/bash 2.进入mysql ...

  10. mysql切换系统盘命令_mysql常用命令

    一.连接MySQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1.例1:连接到本机上的MYSQL. 首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -ur ...

最新文章

  1. python读取大文件-python读取大文件
  2. 客户关系管理系统-CRM源码
  3. C语言(CED)递归实现汉诺塔问题
  4. Ubuntu 终端不能输入中文,不能显示中文的解决办法
  5. vue组件之间的参数传递
  6. 响应式电脑修理公司织梦网站模板,DedeCMS自适应手机版蓝色HTML5电脑修理维修店网站源码下载
  7. 爬取美女图片(python源码)
  8. ios蓝牙开发错误总结
  9. linux mtd手动烧写固件,路由器固件的几种烧写方式
  10. 真实诈骗案例积累(一)
  11. rar压缩包找回压缩密码
  12. 2018年考研真题计算机专业,2018年计算机考研真题及参考答案.pdf
  13. 20-Netty TCP 粘包和拆包及解决方案
  14. Qt 6.3.1 显示界面元素
  15. 网站换服务器ip会降权不,频繁更换IP会导致网站降权
  16. 宝贝不哭,妈妈打它--转贴
  17. IPA转APP的方法和APP转IPA的方法
  18. 怎么彻底清除计算机病毒,Win7旗舰版系统如何才能彻底删除电脑病毒
  19. Linux 使用docker搭建MySQL服务的一些细节问题
  20. 末日孤舰第三季/全集The Last Ship 迅雷下载

热门文章

  1. 桌面应用程序软件开发语言_开发多语言软件应用程序的技巧
  2. 图灵奖设立50周年,向伟大的计算机科学家们致敬
  3. 在win10系统中应用iverilog(Icarus verilog)学习笔记
  4. range.FormulaR1C1属性
  5. Android动态破解微信本地数据库(EnMicroMsg.db)
  6. 1148:连续出现的字符
  7. 30天自制操作系统——第十七天制作命令行窗口
  8. 【项目】#防翟天临老师翻车神器# ——实现文本查重
  9. Python爬取某宝商品数据案例:100页的价格、购买人数等数据!
  10. JSP基础之网站用户管理