有没有办法在 运行 规格时停止增加 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;
我有大约 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;