2014-06-06 91 views
1

新的ROR。我需要一个月的铁轨和:Ruby on Rails n00b。耙数据库:迁移失败

我无法过去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耙分贝:迁移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.

如果你让我知道如何解决这个问题,我会在你的荣誉建几个神社。

再次感谢,

格雷格

+1

'users'不存在为表。你需要在改变它之前创建它。 –

+0

谢谢jken。我对编程超新颖。我将如何创建一个'用户'表? – user3709406

+1

当你刚刚开始使用Rails时,[Rails Guides](http://guides.rubyonrails.org/)非常有用。要了解如何创建和更改表,请查看[Database Migrations Rails指南](http://guides.rubyonrails.org/migrations.html)。 –

回答

0

也许尝试开始:

rake db:setup 

然后

rake db:migrate 

另外,如果您已经安装设计您已经创建数据库之前,您可能需要注释掉routes.rb中的devise_for :users行。

当您的rails环境在rake期间被加载时,它会加载路由,该路由称为devise_for :users,该路径正在查找您的用户表,该用户表尚未存在,并且是您尝试创建的东西。

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命令,因为db将出现在系统中。