开发者

Problems with rake db:migrate

First

ruby script/generate model Buyer id:integer name:string 

after generating Buyer model, I did

rake db:migrate

it was working fine.

After 1 day I have executed below command

ruby script/generate model Seller id:integer seller_name:string

after generating Seller model, I did

rake db:migrate

I got an error, that Buyer table is already exists. why? we have different timestamp file.

class CreateBuyer < ActiveRecord::Migration
  def self.up
    create_table :buyer do |t|
      t.string :name
  开发者_如何学运维    t.text :description
      t.decimal :price
      t.integer :seller_id
      t.string :email
      t.string :img_url

      t.timestamps
    end
  end

  def self.down
    drop_table :ads
  end
end

and another one is

class CreateSellers < ActiveRecord::Migration
  def self.up
    create_table :sellers do |t|
      t.integer :nos
      t.decimal :tsv
      t.decimal :avg_price

      t.timestamps
    end
  end

  def self.down
    drop_table :sellers
  end
end

I used Rails 2.3.11 and rake 0.8.7


Are you sure there were no errors generated when you ran the first migration? If an error is encountered while running a migration, the parts that were already run will still be in the database, but schema_migrations won't be updated with the migration timestamp. Therefore, the next time you try to run migrations, it'll try to re-run the first part of the failed migration, which will generate errors since it's already been run.

Updated: If you look in the error output you added (by the way, please add to the question rather than a comment, so it's formatted and the whole thing is included) you can see that the first Execute db:migrate is running the migration CreateBuyer. This confirms that your migration did not complete the first time you ran it or has since been unsuccessfully rolled back. To fix this, manually drop the buyer table, then rerun your migrations.

As a note, there's at least a couple issues in your CreateBuyers migration:

  1. The table name should be buyers (plural) rather than buyer (singular)
  2. The down part of the migration is dropping the table ads instead of buyers

The second problem there could explain why you're having trouble running migrations now, actually. If you rolled back the CreateBuyers migration, it would have dropped your ads table and left buyers in place.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜