第一
ruby script/generate model Buyer id:integer name:string
生成买方模型后,我做了
rake db:migrate
工作正常。
1天后,我执行了以下命令
ruby script/generate model Seller id:integer seller_name:string
生成卖家模型后,我做了
rake db:migrate
我收到错误,买方表已经存在。为什么?我们有不同的时间戳文件。
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
另一个是
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
我使用Rails 2.3.11和rake 0.8.7
答案 0 :(得分:1)
您确定在运行第一次迁移时没有生成错误吗?如果在运行迁移时遇到错误,则已运行的部分仍将在数据库中,但schema_migrations
将不会使用迁移时间戳进行更新。因此,下次您尝试运行迁移时,它将尝试重新运行失败迁移的第一部分,这将导致错误,因为它已经运行。
已更新:如果你查看你添加的错误输出(顺便说一下,请添加问题而不是评论,因此它已经过格式化并且包含了整个内容)你可以看到第一个Execute db:migrate
正在运行迁移CreateBuyer
。这确认您的迁移未在第一次运行时完成,或者从那时起未成功回滚。要解决此问题,请手动删除buyer
表,然后重新运行迁移。
请注意,CreateBuyers
迁移中至少存在几个问题:
buyers
(复数),而不是buyer
(单数)down
部分正在删除表ads
而不是buyers
第二个问题可以解释为什么你现在在运行迁移时遇到了麻烦。如果您回滚CreateBuyers
迁移,则会删除ads
表并离开buyers
。