之前用thinkPHP的插入数据的时候,可以不写主键,现在怎么不行了,我改了什么地方呢?
本文介绍了之前用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屋!
查看全文