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)

私のテーブル名は「dbrick」です。また、db:dropをレーキして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

スキーマをロードします(DBに対してエラーが検出されたと思います)。

それが失敗した場合は、dbrickを作成する移行を手動で見つけ、ファイルの名前を見つけて、ファイル名に番号をコピーして貼り付け、次のようにします。

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

エラーを探します。場合によっては、1つがすでに存在するか、まだ存在せず、移行が完全に実行されないことがあります。その結果、それがエラーの原因になります。それがうまくいくなら、それを元に戻します:

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 に答える