【问题标题】:Rails rake tasks abortingRails rake 任务中止
【发布时间】:2016-03-23 07:47:15
【问题描述】:

我在为我的 Rails 应用程序运行任何 rake 任务时遇到问题,无论我运行什么任务(rake db:migrate、rake db:reset 等),我都会收到以下错误:

rake aborted!
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such table: pages: SELECT "pages".* FROM "pages"

我继续收到此错误 - 无论我运行什么 rake 任务,以及当我尝试运行服务器时:

rails s

得到以下错误

Exiting
/Users/terencedevine/.rvm/gems/ruby-2.1.2/gems/sqlite3-1.3.11/lib/sqlite3/database.rb:91:in `initialize': SQLite3::SQLException: no such table: pages: SELECT "pages".* FROM "pages" (ActiveRecord::StatementInvalid)

我在网上找到的所有内容都建议使用rake db:reset,但这会返回相同的错误。

我最近运行的迁移之一是XXXX_create_pages.rb,它具有以下代码:

class CreatePages < ActiveRecord::Migration
  def change
    create_table :pages do |t|
      t.string :name, null: false, unique: true
      t.string :title, null: false
      t.text :body

      t.timestamps null: false
    end
  end
end

非常感谢任何帮助!谢谢!

更新

【问题讨论】:

  • 请回溯! :)
  • 你能提供更多关于Backtrace的信息吗?
  • Backtrace 是(或者应该是)直接显示在错误消息下方,并且包含查找导致异常的原因所必需的信息。
  • 这意味着表'pages'不存在。请列出至少 5 个迁移(页面迁移前 2 个,页面迁移后 2 个)及其全名。
  • 在 create_pages 之后我没有更多迁移...最后 5 次迁移已作为屏幕截图添加到问题中

标签: ruby-on-rails ruby ruby-on-rails-4 sqlite


【解决方案1】:

您需要确保实际执行迁移。

尝试rake db:migrate,然后再次尝试运行您的服务器或控制台。

【讨论】:

  • 所有 rake 任务都被中止,当我运行 rake db:migrate 时,我得到:rake aborted! ActiveRecord::StatementInvalid: SQLite3::SQLException: no such table: pages: SELECT "pages".* FROM "pages",下面还有更多输出。
  • 尝试rake db:migrate VERSION=0 然后rake db:migrate
【解决方案2】:

确保运行rake db:create,然后运行rake db:migrate,这样应该可以工作。

【讨论】:

  • 所有 rake 任务都会中止,当我运行rake db:create 时,它要么说创建了 sqlite3 文件,要么创建了它们(如果我删除它们)。然后当我运行rake db:migrate 时,我得到与上面相同的错误:rake aborted! ActiveRecord::StatementInvalid: SQLite3::SQLException: no such table: pages: SELECT "pages".* FROM "pages"
【解决方案3】:
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such table: pages: SELECT "pages".* FROM "pages"

从错误消息中,很明显pages 表现在不存在于您的数据库中。即使您没有故意删除它,它也会以某种方式被删除。

因此,您应该通过运行相应的迁移再次创建pages 表:

rake db:migrate

如果您的架构版本超过迁移XXXX_create_pages.rb,则使用最大时间戳重命名您的迁移。

例如。

你的页面迁移是

20151130203912_create_pages.rb

如果您当前的架构版本是

ActiveRecord::Schema.define(:version => 20151211175046)

那么pages迁移必须是20151230203912_create_pages.rb

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多