在rails

时间:2016-04-28 03:48:11

标签: ruby-on-rails database sqlite migration

我是铁杆新手。生成数据库迁移时出错了。我试图在餐馆添加头像。但是,我试图向用户添加头像。

这是我输入的错误命令:

rails g migration add_avatar_to_user avatar:string

然而,用户不存在它应该是餐馆,所以应该是:

 rails g migration add_avatar_to_restaurant avatar:string

我尝试做rake db:migrate然后意识到我的错误:

SQLite3::SQLException: no such table: users: ALTER TABLE "users" ADD "avatar" varchar

我读了一些关于堆栈溢出的答案,他们只是说要运行正确的生成迁移,它会修复它。所以我做了但却没有。

然后我尝试做一个rake db:rollback,它删除了餐馆(这是我实际想要保留的那个)。

但是我可以在我的db / migrate文件夹中看到我仍然有我创建餐馆的迁移,正确的迁移,用于向餐馆添加头像以及错误的迁移,如下图所示。

enter image description here

所以在我搞砸之前,我想知道我是否只是从树中删除不正确的迁移并运行rake db:migrate是否会修复它或者我还应该做些什么。

由于

1 个答案:

答案 0 :(得分:1)

您可以使用

回滚到正确的迁移
rake db:migrate VERSION=2012342112

确保使用您要回滚的版本。在您的情况下是_create_restaurants.rb

现在删除不必要的迁移。 _add_avatar_to_users

然后最后运行rake db:migrate

在任何给定时间点,您都可以使用

检查您的迁移状态
rake db:migrate:status