gpt4 book ai didi

ruby-on-rails - 需要帮助使用 Rails 将数据库从开发迁移到测试

转载 作者:行者123 更新时间:2023-11-28 20:02:55 25 4
gpt4 key购买 nike

类似的问题问了很多。但是,我认为我的情况有点不同。我从 Heroku(我在产品中使用 sqlite3)拉了一个数据库到我的本地机器(使用 PostgreSQL)。 prod 数据库当时没有任何数据。

在那之后我没有做任何数据库迁移来测试。现在我的开发数据库中有几个字段。但是,当我去测试控制台查看我有什么(指用户表)时,User.count 返回 0,但在 dev 中返回 2 个用户。

所以我做了 rake db:migrate RAILS_ENV=test 既没有错误消息也没有成功消息。我认为这是成功的,并检查了测试数据库是否有这 2 个用户,但仍然没有。然后我尝试了 bundle exec rake db:test:prepare。这是输出

**You have 4 pending migrations:

20120415210441 CreateUsers

20120418064930 AddIndexToUsersEmail

20120419034627 AddPasswordDigestToUsers

20120504031144 AddRememberTokenToUsers

Run `rake db:migrate` to update your database then try again.**

解决方案是什么?

编辑:仅供引用:我正在使用Windows我还运行了 rake db:migrate 并且出现了这个错误。

$ rake db:migrate
== CreateUsers: migrating ====================================================
-- create_table(:users)
rake aborted!
An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: table "users" already exists: CREATE TABLE "users" ("id"
INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "email" varcha
(255), "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)

Tasks: TOP => db:migrate
(See full trace by running task with --trace)

最佳答案

错误消息表明您的开发和测试迁移不同步。

首先在 dev 上运行 migrate。这将使用您最近的所有迁移更新开发人员。

rake db:migrate

然后运行 ​​db:test:prepare。这将使测试数据库与开发数据库具有相同的模式。

rake db:test:prepare

现在,了解 db:test:prepare 使 test 具有与 dev 相同的模式,但没有记录。要在测试中填充记录,请实现固定装置或工厂(请参阅 factory-girl gem)。在您的测试中通常会调用工厂来为该测试创建记录。

关于ruby-on-rails - 需要帮助使用 Rails 将数据库从开发迁移到测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10501939/

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