2007-11-23

db:migrate时,Table already exist 的解决办法

关键字: rails ruby migrate
        在运行rake db:migrate时,有时会发现 rake abort 的错误,rake说某个表已经存在,因此这个migrate的工作它干不了。这个表确实是已经存在的,那么如何让rake跳过这个表,或是强制覆写这个表呢?有一处需要修改:

原migrate文件:
ruby 代码
 
  1. class CreateProducts < ActiveRecord::Migration  
  2.   def self.up  
  3.     create_table :products do |t|  
  4.       t.column :title:string  
  5.       t.column :description:text  
  6.       t.column :image_url:string  
  7.     end  
  8.   end  
  9.   
  10.   def self.down  
  11.     drop_table :products  
  12.   end  
  13. end  



修改后的migrate文件:
ruby 代码
 
  1. class CreateProducts < ActiveRecord::Migration  
  2.   def self.up  
  3.     create_table :products:force => true do |t|  
  4.       t.column :title:string  
  5.       t.column :description:text  
  6.       t.column :image_url:string  
  7.     end  
  8.   end  
  9.   
  10.   def self.down  
  11.     drop_table :products  
  12.   end  
  13. end  

看出来了吗,在create_table的参数中,加上 :force => true即可。
评论
mirway 2007-11-24
学习了,我以前也经常出现这种问题,只知道不行了用version重新来。看来要好好学习Ruby基础了。
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

trace
搜索本博客
我的相册
A2b936ce-df10-4c34-ac1d-9d9e96f4141f-thumb
Range表达式图示说明
共 8 张
最近加入圈子
存档
最新评论