之前用thinkPHP的插入数据的时候,可以不写主键,现在怎么不行了,我改了什么地方呢?

查看:117
本文介绍了之前用thinkPHP的插入数据的时候,可以不写主键,现在怎么不行了,我改了什么地方呢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

        $use = D('Classone');

        $data['姓名']='黄方舟';
        $data['学号']='1598756321';
        $data['语文']='101';
        $data['数学']='99';
        $data['英语']='115';
        $data['time']=date("Y-m-d H:i:s",Time());

        $use->create($data);
        $use->add();

这段代码之前行,会自动增加主键;
但是现在失效了,提示主键重复:
1062:Duplicate entry '0000000000' for key '学号' [ SQL语句 ] : INSERT INTO classone (语文,数学,英语,time,name) VALUES ('101','99','115','2017-08-22 02:31:58','黄方舟')

请问我是无意中改了什么才会这样的呢?

解决方案

补充,被踩莫名其妙,请评论说出你的不满好吗?是因为我自己遇到过这种问题,实际解决过才回答的,
烦请题主如果解决了问题帮我顶一下顶回来哈。

按照你说的,你的学号是自动增加,那么你填写的学号就无效了。有可能是你用来测试,生成了一大堆后删除又生成了一大堆,导致自动增加的计数器溢出。

解决:
第一步 返回最大 学号

select max(学号) from classone

第二部 对齐计数器

ALTER TABLE classone AUTO_INCREMENT = <value from step 1 + 100>;

最后重试插入数据的代码。
另外说一句,学号这东西自动增加怎么感觉有点奇怪,不过这个就是数据库结构的事情了。

这篇关于之前用thinkPHP的插入数据的时候,可以不写主键,现在怎么不行了,我改了什么地方呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆