加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql-自动增量已自动重置为1

发布时间:2020-12-11 23:27:13 所属栏目:MySql教程 来源:网络整理
导读:我遇到了一个我无法解决的问题. 我有一个数据库表project_queues用作队列,我在其中存储一些记录.处理记录后,它们将被删除. Rails构造record.destroy在一个循环中调用删除,该循环触发MySql数据库上的DELETE record FROM表. 但是现在我注意到,在表project_queu

我遇到了一个我无法解决的问题.

我有一个数据库表project_queues用作队列,我在其中存储一些记录.处理记录后,它们将被删除.
Rails构造record.destroy在一个循环中调用删除,该循环触发MySql数据库上的DELETE record FROM表.

但是现在我注意到,在表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

但是我不认为这些与AI有关. 最佳答案 好吧,我发现了问题(这是2013年以来的已知问题).

这是重现问题的方法.

# Your MariaDB Server version: 10.1.29-MariaDB MariaDB Server
# Engine InnoDB

create database ai_test;
use ai_test;

CREATE TABLE IF NOT EXISTS ai_test(id INT AUTO_INCREMENT PRIMARY KEY,a VARCHAR(50));

show table status like 'ai_test' 
  >  Auto_increment: 1

INSERT INTO ai_test(a) VALUES ('first');
INSERT INTO ai_test(a) VALUES ('second');
INSERT INTO ai_test(a) VALUES ('third');

show table status like 'ai_test' 
  >  Auto_increment: 4

MariaDB [ai_test]> Delete from ai_test where a = 'first';
MariaDB [ai_test]> Delete from ai_test where a = 'second';
MariaDB [ai_test]> Delete from ai_test where a = 'third';

show table status like 'ai_test' G
  >  Auto_increment: 4

# Restart Server
sudo service rh-mariadb101-mariadb stop
sudo service rh-mariadb101-mariadb start

show table status like 'ai_test' G
  >  Auto_increment: 1

我将尝试找到一些解决方法来解决此问题,但是我认为这会导致很多用例受到破坏,这些用例引用了一些存档表或类似的东西.

参考文献:

> https://bugs.mysql.com/bug.php?id=64287
> https://dev.mysql.com/worklog/task/?id=6204
> https://openquery.com.au/blog/implementing-sequences-using-a-stored-function-and-triggers

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读