Ruby on Rails n00b。 rake db:migrate失败

时间:2014-06-06 03:49:35

标签: ruby-on-rails sqlite rake dbmigrate

ROR新手。我花了一个月的时间和:

我无法通过f' n $ rake db:migrate !!!!

我现在收到此消息

gregs-MacBook-Air:trydah gregfrontiero
$ rake db:migrate

== 20140606025644 AddDeviseToUsers: migrating =================================

-- change_table(:users)

rake aborted!

StandardError: An error has occurred, this and all later migrations canceled:
  

SQLite3::SQLException: no such table: users: ALTER TABLE "users" ADD "email" varchar(255) DEFAULT '' NOT NULL/Users/gregfrontiero/.rvm/gems/ruby-2.1.2/gems/sqlite3-1.3.9/lib/sqlite3/database.rb:91:in初始化' "`

我在StackOverflow上看到一些东西说要重置并得到这个:

gregs-MacBook-Air:trydah gregfrontiero$ rake db:reset
  

/Users/gregfrontiero/Desktop/trydah/db/schema.rb doesn't exist yet. Run rake db:migrate to create it, then try again. If you do not intend to use a database, you should instead alter /Users/gregfrontiero/Desktop/trydah/config/application.rb to limit the frameworks that will be loaded.

如果你让我知道如何解决这个问题,我会为你建造几座神社。

再次感谢,

格雷格

2 个答案:

答案 0 :(得分:4)

正如评论中所提到的,错误清楚地表明了这一点:

no such table: users

您遇到的问题是您正在尝试更改不存在的表格。如果您在之前的迁移中创建了表格,那么在您的服务器上删除了,您可能希望使用rake db:reset,但是由于您已经错误地使用了该命令,因此您可能需要设置一个新表。

-

我认为你最好这样做:

$ rails g migration CreateUserTable

#db/[timestamp]_create_users.rb
class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
        #... columns here
        t.timestamps
    end
  end
end

如果您之后删除了当前迁移内容 - 允许您运行此新内容,则可以通过运行rake db:migrate来创建数据库。之后,您需要创建一个新的迁移,复制已注释的迁移,然后粘贴到新的迁移中。

这将允许您在数据库中运行change命令,因为数据库将出现在系统上。

答案 1 :(得分:0)

也许尝试从以下开始:

rake db:setup

然后

rake db:migrate

此外,如果您在创建数据库之前设置了Devise,则可能需要在routes.rb中注释掉devise_for :users行。

rake期间加载您的rails环境时,它会加载路由,这会调用此devise_for :users正在查找您的用户表,该表尚未存在且是您的&# #39;重新尝试创作。