有没有办法在 运行 规格时停止增加 mysql 中的自动增量值?

Is there a way to stop increasing the auto increment value in mysql when running specs?

我有大约 100 个规范,在我目前正在开发的 Sinatra 项目中。 为了进行测试,我目前正在使用 rspec + DatabaseCleaner 和 :t运行saction 策略。

其中一些规范要求在数据库中创建新记录,因此它们增加了 mysql 中的自动增量 table 值。有没有一种方法可以 运行 使用 t运行saction 策略进行测试,而无需使用 DatabaseCleaner 或其他 gem?

增加自动增量值

编辑:我希望 auto_increment 具有测试前的值 运行。

测试后将值重置为某个已知值。看看这里...

How to reset AUTO_INCREMENT in MySQL?

我假设在测试时不会从生产或外部测试中插入任何记录。

首先通过以下命令从您的 table 中获取最后 auto_id -

select max(id) from mytable;

假设是 240125

现在开始你的测试,完成后你的测试按照下面做 -

首先删除所有新建的auto_ids-

delete from mytable where id>240125;

现在从这个位置设置auto_increment。

alter table mytable AUTO_INCREMENT=240126;