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

mysql-自动增量已自动重置为1,第1张

概述我遇到了一个我无法解决的问题.我有一个数据库表project_queues用作队列,我在其中存储一些记录.处理记录后,它们将被删除.Rails构造record.destroy在一个循环中调用删除,该循环触发MySql数据库上的DELETE record FROM表.但是现在我注意到,在表project_queues中,将autoIncrement ID(主键

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

我有一个数据库表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 InnoDBcreate 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: 1INSERT 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: 4MariaDB [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 Serversudo service rh-mariadb101-mariadb stopsudo service rh-mariadb101-mariadb startshow 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 总结

以上是内存溢出为你收集整理的mysql-自动增量已自动重置为1 全部内容,希望文章能够帮你解决mysql-自动增量已自动重置为1 所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1166052.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存