gpt4 book ai didi

ruby-on-rails - 带有 SQL 序列的迁移未在测试环境中应用

转载 作者:行者123 更新时间:2023-12-04 17:43:22 25 4
gpt4 key购买 nike

我有当前的迁移

class CreateSlugSequence < ActiveRecord::Migration[5.2]
def up
execute <<-SQL
CREATE SEQUENCE slug_sequence
SQL
end

def down
execute <<-SQL
DROP SEQUENCE slug_sequence
SQL
end
end

我运行 rails db:migrate

进入rails c(开发模式)

运行 ActiveRecord::Base.connection.exec_query("select nextval('slug_sequence')")[0]['nextval']

并得到期望值

但是如果我在测试模式下进入rails c,不知为何序列表不存在

ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR:  relation "slug_sequence" does not exist

我运行了 ActiveRecord::Migrator.current_version,检查最后应用的迁移是什么,它返回最新版本。

提前感谢您的帮助。

最佳答案

我建议删除测试数据库并重新创建它。虽然这些应该保持同步,但有时却不同步,您必须执行手动步骤才能将它们放在一起。

RAILS_ENV=test rake db:reset

奇怪的是它不能与那个一起工作,在那个任务中放置一个 pry 调试器并看看发生了什么会很有趣。 https://github.com/rails/rails/blob/master/activerecord/lib/active_record/railties/databases.rake#L122

手动步骤

RAILS_ENV=test rake db:drop
RAILS_ENV=test rake db:create
RAILS_ENV=test rake db:migrate

关于ruby-on-rails - 带有 SQL 序列的迁移未在测试环境中应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53374130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com