我刚遇到一个我无法解决的问题。
我有一个用作队列的数据库表 project_queues
,我在其中存储了一些记录。处理记录时,它们将被删除。
删除由 rails 构造 record.destroy
在一个循环中调用,该循环触发 MySql 数据库上的 DELETE record FROM table
。
但现在我注意到,在表 project_queues
中,autoIncrement Id(主键)被设置回 1。 (这破坏了我在审计表中的引用。相同的记录现在指向多个不同的项目队列)
show create table project_queues;
CREATE TABLE `project_queues` (
`id` int(11) NOT NULL AUTO_INCREMENT,
...
...
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=1
我不使用 TRUNCATE project_queues
或删除表结构并在代码中重新创建它。
有没有人遇到和我一样的问题?我在日志中也找不到任何异常。
我正在使用 Rails 5.2.3、MariaDB 10.1。
从应用程序到数据库的连接强制执行此 SQL 模式:
- NO_AUTO_VALUE_ON_ZERO
- STRICT_ALL_TABLES
- NO_AUTO_CREATE_USER
- NO_ENGINE_SUBSTITUTION
- NO_ZERO_DATE
- NO_ZERO_IN_DATE
- ERROR_FOR_DIVISION_BY_ZERO
但我不认为这些与人工智能有关。
最佳答案
Auto_increment 可以通过更新重置。由于您将其用作队列,我想您不会进行更新,但值得一问。
此外,您使用的是什么表实现,MyIsam、InnoDB,其他...?
关于mysql - 自动增量已自动重置回 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55512290/