【问题标题】:Ruby on Rails n00b. rake db:migrate failRuby on Rails n00b。耙分贝:迁移失败
【发布时间】:2014-07-27 06:05:30
【问题描述】:

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:ininitialize' "`

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

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

/Users/gregfrontiero/Desktop/trydah/db/schema.rb doesn't exist yet. Runrake 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.

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

再次感谢,

格雷格

【问题讨论】:

  • users 不作为表存在。您需要在更改它之前创建它。
  • 感谢 jken。我对编程非常陌生。我将如何创建一个“用户”表?
  • Rails Guides 在您刚开始使用 Rails 时非常有用。要了解如何创建和更改表,请查看Database Migrations Rails Guide

标签: ruby-on-rails sqlite rake dbmigrate


【解决方案1】:

正如 cmets 中所述,错误清楚地说明了这一点:

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 命令,因为该数据库将存在于系统中。

【讨论】:

    【解决方案2】:

    也许尝试从以下开始:

    rake db:setup
    

    然后

    rake db:migrate
    

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

    当您的 rails 环境在rake 期间加载时,它会加载路由,该路由调用此devise_for :users,它正在寻找您的用户表,该表尚不存在,而您正试图创建该表。

    【讨论】:

      猜你喜欢
      • 2012-02-07
      • 2012-01-14
      • 1970-01-01
      • 1970-01-01
      • 2013-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-24
      相关资源
      最近更新 更多