【发布时间】:2018-11-01 08:53:16
【问题描述】:
我正在为我的应用程序使用 cockroachDB。
其中一个架构具有增量 ID(从 1 开始)。我为该表制作了序列,并将该序列用作主键。
问题是这个序列不会重置,除非我删除数据库并创建它。
所以我的问题是每次运行测试时是否可以重置此序列?还是只有在每次运行测试时都删除并创建数据库才能做到这一点?
提前谢谢你。
【问题讨论】:
标签: testing ecto cockroachdb
我正在为我的应用程序使用 cockroachDB。
其中一个架构具有增量 ID(从 1 开始)。我为该表制作了序列,并将该序列用作主键。
问题是这个序列不会重置,除非我删除数据库并创建它。
所以我的问题是每次运行测试时是否可以重置此序列?还是只有在每次运行测试时都删除并创建数据库才能做到这一点?
提前谢谢你。
【问题讨论】:
标签: testing ecto cockroachdb
CockroachDB 支持setval() 函数来重置序列的值。
但还要记住,序列并不能保证不会有间隙(回滚的事务可能会在序列中留下从未使用过的间隙),因此您的应用程序不应假设值从 1 开始而不跳过任何内容。如果您不重置序列,则与在您的测试套件开始时有一个非常大的间隙相同。
【讨论】:
我很确定实现这一目标的唯一方法确实是“每次运行测试时删除并创建数据库”
这是一个参考 - How to rollback, reset, or drop Ecto test database?
【讨论】: