【问题标题】:How to have Database Cleaner reset the insert ID to 1?如何让 Database Cleaner 将插入 ID 重置为 1?
【发布时间】:2015-06-23 21:42:00
【问题描述】:

我从使用截断转换为 Database Cleaner 的事务策略。它要快得多(准确地说是 2.5 倍)。

现在的问题是我有一些测试期望第一个插入 ID 为 1。这些测试用于分页响应。他们期望数据库中有 11 条记录,从 id 1 开始。

是否可以将 Database Cleaner 配置为使用事务但也将插入 ID 设置为 1?

使用 Postgres。

【问题讨论】:

    标签: postgresql rspec database-cleaner


    【解决方案1】:

    嗯 尝试:

    ALTER SEQUENCE seq_name RESTART WITH 1
    

    其中 seq_name 是绑定到您的序列的序列的名称。如果您有 pgAdmin,然后单击该列,您将读取 id integer defaul next_val('seq_name')

    【讨论】:

    • 这其实是一个不错的解决方案。它在大约 0.001 秒内执行:ActiveRecord::Base.connection.execute 'ALTER SEQUENCE foos_id_seq RESTART WITH 1'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 2019-10-14
    • 2019-01-16
    • 2019-05-24
    相关资源
    最近更新 更多