【问题标题】:CRDB with ecto, when testing, it does not start sequence from initial value带有ecto的CRDB,在测试时,它不会从初始值开始序列
【发布时间】:2018-11-01 08:53:16
【问题描述】:

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

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

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

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

提前谢谢你。

【问题讨论】:

    标签: testing ecto cockroachdb


    【解决方案1】:

    CockroachDB 支持setval() 函数来重置序列的值。

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

    【讨论】:

      【解决方案2】:

      我很确定实现这一目标的唯一方法确实是“每次运行测试时删除并创建数据库”

      这是一个参考 - How to rollback, reset, or drop Ecto test database?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-11
        • 2023-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多