Mysql Can';t在rails上运行数据库迁移

Mysql Can';t在rails上运行数据库迁移,mysql,ruby-on-rails,ruby,database,dbmigrate,Mysql,Ruby On Rails,Ruby,Database,Dbmigrate,通过rakedb:migrate在rails中迁移数据库时遇到了持续的问题 我的迁移当前如下所示: class CreateArticles < ActiveRecord::Migration def change create_table :articles do |t| t.string :title t.text :subtitle t.string :slug t.text :body t.integer :publish, li

通过rakedb:migrate在rails中迁移数据库时遇到了持续的问题

我的迁移当前如下所示:

class CreateArticles < ActiveRecord::Migration
  def change
    create_table :articles do |t|
    t.string :title
    t.text :subtitle
    t.string :slug
    t.text :body
    t.integer :publish, limit: 1, default: 0
    t.timestamps
    end
  end
end
但是,即使是这样,也会让人喜怒无常,所以大多数时候我都需要使用

db:drop
db:create
然后像往常一样再次运行迁移。基本上db:migrate只在删除和创建db后的第一次工作

在运行迁移之前,我还尝试了回滚

这远远不够理想,所以我非常感谢您的帮助


(我意识到也有类似的问题,但它们的所有问题都在数据库重置后得到解决)

您需要向下运行迁移
然后再次向上运行它,这是通过
重做
任务完成的。试试这个:

rake db:migrate:redo VERSION=20080906120000

编辑:如果您想在此表中保留数据,最好进行新的迁移以删除列或执行任何您想执行的操作,因为上述操作将删除并重新创建表,并在过程中擦除数据。

是否多次运行迁移?您需要先执行db:rollback,然后执行db:migrate吗?嗨,鲍勃,是的,每当我从迁移中添加或删除某些内容时,我都会像中一样多次运行它。在运行它之前,我已经尝试了几次回滚,但似乎没有什么不同。请看链接,它可能会有帮助。谢谢Shamsul,我也尝试过,它有时会起作用,但我正在寻找一个更永久的修复程序,以便可以正常运行db:migrate。
rake db:migrate:redo VERSION=20080906120000