修改数据库数据出现:Duplicate entry for key ‘PRIMARY‘的原因(外加数据库语句报错合集)

目录

    • Mysql报错
      • Mysql基础合集
    • Oracle报错
      • Oracle 基础合集
    • SQL Server报错
      • SQL Server 基础合集

标题对应的报错:
修改数据库数据出现:Duplicate entry for key ‘PRIMARY‘的原因(外加数据库语句报错合集)_第1张图片
数据库查询的时候未发现还生成了其他多条记录,经过搜索后发现了其他多条数据!
意思是主键的值是不能出现两条重复的记录的,在修改的时候不能修改成已存在的数值。
修改数据库数据出现:Duplicate entry for key ‘PRIMARY‘的原因(外加数据库语句报错合集)_第2张图片
关于主键和多个主键(联合主键)的区别:
主键的唯一性和联合主键概念辨析

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类型

你可能感兴趣的:(big,data)