1

我目前正在做一个 Rails 项目。当我尝试启动 rails 服务器时,它会抛出以下错误:

=> Booting WEBrick
=> Rails 3.1.3 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Exiting
/var/lib/gems/1.9.1/gems/activerecord-3.1.3/lib/active_record/connection_adapters      
/sqlite_adapter.rb:439:in `table_structure': Could not find table 'dbrick'   
(ActiveRecord::StatementInvalid)

我的表名是“砖”。我还尝试 rake db:drop 和 rake db:mirgrate。迁移时抛出以下错误:

rake aborted!
Could not find table 'dbrick'

Tasks: TOP => db:migrate => environment
(See full trace by running task with --trace)

这是我的迁移文件:

class CreateDbricks < ActiveRecord::Migration
def self.up
  create_table :dbricks do |t|
    t.text :description
    t.string :video
    t.string :video_html
    t.string :image_id
    t.string :option_id
    t.boolean :choice
    t.string :reach
    t.integer :category_id
    t.string :user_id
    t.datetime :deleted_at

    t.timestamps
  end
end

 def self.down
   drop_table :dbricks
 end
end

如果有人帮助我解决这个问题,那将是非常有帮助的。提前致谢。

4

2 回答 2

0

我会尝试 :

rake db:schema:load

加载您的架构(我相信它会针对您的数据库找到错误)。

如果失败,我将手动找到创建您的 dbrick 的迁移,找到文件名并复制并粘贴文件名中的数字以生成此:

rake db:migrate:down VERSION=123412341234 # <-- where the number is the number you pasted

寻找错误。有时一件事已经存在,或者不存在并且阻止迁移一直运行,因此这将是您错误的根源。如果成功,则将其重新耙起:

rake db:migrate:up VERSION=123412341234 # <-- where the number is the number you pasted

如果它没有成功,那么你将不得不戴上你的矿工头盔,并用以下方式弄脏你的手:

rails dbconsole

这将带您进入您的数据库,您必须手动删除阻止迁移发生的任何表/列。一旦修复,退出并rake db:migrate:up

于 2012-08-02T10:27:24.577 回答
0

你迁移数据库了吗?rake db:migrate

如果有,请删除数据库(这会删除所有数据,所以要小心 - 如果您不关心丢失数据库中的数据,请执行此操作)

rake db:drop

这将清除您的数据库和架构。然后

rake db:migrate

这将重新迁移您的架构。

于 2012-08-02T11:44:31.350 回答