现象

在使用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

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐