现象

在使用insert或replace插入数据时,出现异常。

INSERT INTO `lizz`.`user` (`id`,`name`) values(1,'lizz')

异常:

replace语句异常

1110 - Column 'id' specified twice

insert语句异常:

1064 - In insert Syntax, you can't set value for Autoincrement column!

原因分析

  1. 1110错误提示原因为id字段重复了2次,但是语句中没有2个id。
  2. 1064错误提示为不能设置自动递增字段

        分析id字段可知,因为表中id字段为自增字段,mysql在解析sql语句没啥没有把`id`当成id字段,因此自动填充了id字段,然后再解析sql字段时有将`id`当成id插入了,因此出现了2次id插入。

    

解决方案

将sql中的字段名不要加单引号即可。

INSERT INTO `lizz`.`user` (id,name) values(1,'lizz')

    因为部分场景中为了防止有些表中的字段名为关键字,因此特意增加了单引号进行区分,导致了该类问题。因此在创建字段时尽量避免使用关键字为字段名。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐