我们有一个 MySQL 表,它有一个自动递增字段设置为 INT (11)。该表几乎存储了在应用程序中运行的作业列表。在应用程序生命周期中的任何给定时刻,该表很可能包含数千个条目或完全为空(即一切都已完成)。
该字段不是其他任何东西的外键。
自动增量似乎随机将自身重置为零,尽管我们实际上从未能够捕获重置。
问题变得很明显,因为我们看到自动增量字段增加到 600,000 条左右的记录,然后一段时间后自动增量字段似乎在低 1000 条记录中运行。
如果表为空,几乎就像自动增量会自行重置一样。
这可能吗?如果可能,我该如何关闭它或更改它的重置方式?
如果不是,有没有人解释它为什么会这样做?
谢谢!
长话短说,我有一个 SQL 文件,我想将其作为skel样式文件导入,因此这将以编程方式重复执行。我可以随心所欲地编辑 SQL 文件,但我不想接触应用程序本身。
此应用程序用于userid = 0表示匿名用户。它在数据库中还有一个相关的(空白)条目来表示这个“用户”。因此,我的行skel.sql看起来像这样:
INSERT INTO `{{TABLE_PREFIX}}users` VALUES (0, '', '', '', 0, 0, 0, '', '', 0, 0, 0, 0, 0, NULL, '', '', '', NULL);
Run Code Online (Sandbox Code Playgroud)
问题在于这uid是一个auto_increment字段,从技术上讲,它0是一个无效值。或者至少,如果您将其设置为 0,您基本上是在告诉 MySQL,“请在此字段中插入下一个 id”。
现在,我想我可以把一个INSERT那么UPDATE查询到我的SQL文件,但有没有告诉MySQL的一般,是的,其实我是想以插入的方式0进入这个领域?