我碰着了一个我无法办理的题目.
我有一个数据库表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
(编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|