【发布时间】:2019-08-25 23:51:27
【问题描述】:
我刚刚遇到了一个我无法解决的问题。
我有一个数据库表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
但我不认为这些与人工智能有关。
【问题讨论】:
-
也许我发现了类似的问题stackoverflow.com/questions/38786800/…
-
但是您确实在删除行后重新启动了服务器。
标签: mysql sql ruby-on-rails mariadb