首页 > 解决方案 > 带有ecto的CRDB,在测试时,它不会从初始值开始序列

问题描述

我正在为我的应用程序使用 cockroachDB。

其中一种模式具有增量 ID(从 1 开始)。我为该表制作了序列并将该序列用作主键。

问题是除非我删除数据库并创建它,否则此序列不会重置。

所以我的问题是每次运行测试时是否可以重置此序列?还是只有在每次运行测试时都删除并创建数据库时才能做到这一点?

先感谢您。

标签: testingectocockroachdb

解决方案


CockroachDB 支持setval()重置序列值的功能。

但也要记住,序列并不能保证不会有间隙(回滚的事务可能会在序列中留下从未使用过的间隙),因此您的应用程序不应假设值从 1 开始而不跳过任何内容。如果您不重置序列,则与在测试套件开始时有一个非常大的间隙相同。


推荐阅读