MySQL自增变量auto_increment踩坑,重启后值丢失,新增主键id变成表中的最大值加1
web Mysql 2024-01-19 512 0
关于本站

“最难不过坚持”

本人承接扒站仿站,php网站维护,病毒查杀,网站编辑,网站改版,html制作

有需要网站维护,改版,病毒查杀,网站编辑,网站备案,html制作等相关的工作可以联系我。
本人有多年相关工作经验,也可提供免费咨询,交个朋友。
有需要探讨问题的朋友,也可以加我微信,共同探讨!
微信:15011482830 QQ:408917339

6490295 2614 39
最新评论
https://jueru.net/
评 留言
:weixiao:
评 留言
:shuijiao: :weiqu: :zhenbang: :leng:
评 留言
:yiwen: :yiwen: :yiwen: :yiwen:
评 EasySass: could not generate CSS file. See Output panel for details.
这个业务逻辑多少都有点奇怪了,阅读浏览次数增值在新闻详情页的控制器方法里setInc,这怎么还写进模型事件里了。如果非要用onAfterRead也可以,把新闻文章的内容单独分出来一个news_content表,然后把它和news做关联,然后给news_content表的onAfterRead事件做增值处理,这样点进新闻页内查询到文章内容时才会触发它。
评 TP6模型事件-查询后onAfterRead不好用
文章标签更多
ThinkPHP (254)
Mysql (58)
DedeCms (33)
jQuery (67)
证件照 (1)
setInc (4)
setDec (4)
onclick (5)
打开边栏(ESC) 关闭边栏(ESC)

MySQL自增变量auto_increment踩坑,重启后值丢失,新增主键id变成表中的最大值加1

情景:

前几天清理会员表,把没用的测试会员删除了,

今天再次添加会员,发现会员主键id是以前删除的主键id,这样就会导致,订单表等一些跟会员id相关的表,数据错乱(新建的会员不应该有其他表的数据)

网站查询得知:

1.innodb主键重置问题
在 MySQL低版本中,InnoDB表中使用自增的 auto-increment计数器 会把值存放在内存中,不会写入磁盘。一旦MySQL 服务重启,这个值就丢了,InnoDB 引擎会根据表中现有的数据重新计算该计数器的值:获取表中最大的自增主键ID作为auto-increment计数器的最大计数,当insert数据时,在auto-increment计数器最大值上1。
Innodb表中把自增列作为主键ID时,在mysql重启后就会存在ID重置问题。删除数据后,再重启,AUTO_INCREMENT会查询表里最大ID并进行重置,重置后和重启前AUTO_INCREMENT计数器的值不同。

在MyISAM引擎表中的自增列不会存在这个问题。

但是要使用“事务”,只能用InnoDB类型,

所以要自己注意,没事不要删除数据,伪删除的数据,就让它在数据表待着

版权声明:本篇文章来源于网络。 来源链接

相关推荐
Mysql提示“SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)”错误
Mysql | 2019-08-30 26459
在登录用thinkphp框架做的网站后台时,提示: MySQL提示“SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)”错误 怀疑是数据库连接密码错误,仔细检查了config.php文件,发现没有错误,...
Navicat for Mysql 如何备份数据库psc格式
Mysql | 2017-12-27 10076
Navicat for Mysql 如何备份数据库psc格式 navicat 备份数据库放在哪里 1,打开要备份的数据库,在 Navicat 界面的菜单栏中选择“备份”功能按钮。 2,在导航栏中点击“新建备份”按钮。 3,在弹出的新建备份窗口中点击“开始”按钮,执行备份的命令。 ...
评论:0条
评论加载中...
发表评论