我无法通过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:migrateto 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.
如果你让我知道如何解决这个问题,我会为你建造几座神社。
再次感谢,
格雷格
答案 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;重新尝试创作。