耙子流产了! Mysql2 ::错误:重复列名称' slug':ALTER TABLE`category`

时间:2017-04-24 05:14:57

标签: mysql ruby-on-rails activerecord

最近,我在本地 rails应用程序的两个模型上实现了friendly_id。我创建了两个迁移add_slug_to_categoriesadd_slug_to_services。并完成了步骤并让friendly_id网址正常工作。然后我将相同的迁移更改推送到我的生产服务器。然后在生产rails控制台中,我运行了Category.find_each(&:save)Service.find_each(&:save),并让它也在生产。

然后,为了在我的本地计算机上进行某些测试,我从生产中获取了dump.sql,并通过运行rake db:drop并由rake db:create创建并将rake db:migrate删除现有数据库并运行{ {1}}。然后我将dump.sql推送到本地数据库。然后当我运行rails s时出现migrations pending错误。所以我继续前进并再次跑rake db:migrate。然后我得到了

== 20170411073744 AddSlugToCategories: migrating ==============================
-- add_column(:categories, :slug, :string)
rake aborted!
StandardError: An error has occurred, all later migrations canceled:

Mysql2::Error: Duplicate column name 'slug': ALTER TABLE `categories` ADD `slug`  

我尝试删除db并再次创建多次。但我不断遇到同样的问题。有人可以告诉我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

要解决当前问题,您需要在ALTER TABLE categories DROP COLUMN slug;中运行dbconsole,以后首先需要导入dump.sql,然后迁移rake db:migrate