标题对应的报错:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b504892be96a92ad75ce39b0766be37c.png)
数据库查询的时候未发现还生成了其他多条记录,经过搜索后发现了其他多条数据!
意思是主键的值是不能出现两条重复的记录的,在修改的时候不能修改成已存在的数值。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/66f59d0a32c24464836d5fe36ac9b970.png)
关于主键和多个主键(联合主键)的区别:
主键的唯一性和联合主键概念辨析
Mysql报错
> 1. ambiguous column name
解决方法:
在多张表里都有的字段名称,在选择语句中要标明是哪张表里的字段。
Mysql基础合集
- 1.UTF8:一个汉字=3个字节
GBK:一个汉字=2个字节
Oracle报错
Oracle 基础合集
1.to_number和to_char恰好是两个相反的函数;
SQL Server报错
> 1. 不能将显式值插入时间戳列。请对列列表使用 INSERT 来排除时间戳列,或将 DEFAULT 插入时间戳列。 (2021.12.30)
解决方法:
SQL Server中的timestamp类型,不能插入显式值,将插入语句中对应字段插入删去即可。
> 2. 将截断字符串或二进制数据
解决方法:
主要原因就是你增加的数据字段长度超过数据库中字段所定义长度,去查看一下自己数据库中的字段的长度,一般是误写出来的,查看一下自己数据库中需要自己设置字段类型长度的。
> 3.Mybatisplus savebatch出现 Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 必须执行该语句才能获得结果。
解决方法:
将实体类中的主键自增id的TableId注释掉
> 4.SQL SERVER实现limit,与mysql不同
>>>查询前5条
select TOP 5 *from browserecord where username = '1';
查第4到第7
SELECT TOP 4 * FROM browserecord
WHERE browserecord.recordid
NOT IN
(SELECT TOP 3 recordid FROM browserecord)
>>>!!!另外一种分页查询的方式
select id from student
order by id ASC OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY !!!这种方式一定要加order by 不然会报错
> 5.Mybatis LocalDateTime类型的对象无法跟数据库的datetime类型比较
解决方法:
#{ 里面带上jdbcType = DATE}
<if test="startInpTime != null"><!-- 稽查时间-->
and inpcase.inp_time <![CDATA[ >= ]]> #{startInpTime,jdbcType=DATE}
</if>
<if test="endInpTime != null"><!-- 稽查时间-->
and inpcase.inp_time <![CDATA[ <= ]]> #{endInpTime,jdbcType=DATE}
</if>
SQL Server 基础合集
1.一个中文占两个字符
2.字段为nvarchar时,在写 LIKE 或者 = 时,需要写 LKIE N’%模糊查询%’ 前面需要加个N,才能转换为nchar类型