将我的应用程序部署到heroku
时,出现一些有关迁移的错误。
这样我将所有迁移结合在一起,只保留包含所有finally属性的创建表文件,删除编辑表。
现在,每次重新启动服务器(本地主机)时,我都必须再次db:migrate
才能正常工作。
当我只使用db:migrate
时,错误提示:table 'product' already existed'
所以我必须先db:drop
,然后db:migrate
才能使我的应用正常工作
我花了很多时间。
我该如何解决这个问题?
这是我的迁移状态:
up 20190306060445 ********** NO FILE **********
down 20190306060545 Create product
up 20190307035103 Create active storage tablesactive storage
up 20190308045037 ********** NO FILE **********
up 20190308071304 ********** NO FILE **********
down 20190308072304 Devise create users
up 20190308074025 Devise create admins
down 20190308082018 Create categories
up 20190308083018 ********** NO FILE **********
up 20190311041416 ********** NO FILE **********
up 20190313084429 Create payment
up 20190314024236 Create cart
up 20190314024911 Create cart product
up 20190314035334 Create messages
up 20190314145333 Create payment item
up 20190314151340 ********** NO FILE **********
up 20190315020606 ********** NO FILE **********
up 20190318073652 Create voucher
up 20190319035819 ********** NO FILE **********
up 20190319134032 Contacts
up 20190320034249 ********** NO FILE **********
up 20190320062223 ********** NO FILE **********
up 20190325132236 ********** NO FILE **********
up 20190325155829 ********** NO FILE **********
up 20190329095529 ********** NO FILE **********
up 20190329110656 ********** NO FILE **********
up 20190330145000 ********** NO FILE **********
up 20190331162926 ********** NO FILE **********
up 20190408155326 ********** NO FILE **********
up 20190419055934 ********** NO FILE **********
up 20190419060341 ********** NO FILE **********
up 20190502105847 ********** NO FILE **********
up 20190502110019 Add stock
up 20190506114910 ********** NO FILE **********
up 20190506115146 ********** NO FILE **********
up 20190506115302 ********** NO FILE **********
up 20190513042021 ********** NO FILE **********
up 20190513050115 ********** NO FILE **********
up 20190514025220 ********** NO FILE **********
up 20190514031046 ********** NO FILE **********
up 20190516010239 Create comment
up 20190516020021 ********** NO FILE **********
up 20190517132706 Create notification
up 20190524152143 Create brands
up 20190527040142 ********** NO FILE **********
up 20190528113143 Add columns devise
up 20190528113658 Add columns devise 1
up 20190531125307 Create news
up 20190531144908 Create ckeditor assets
up 20190601100118 Create news products
up 20190602144319 Create type of news
up 20190602155208 ********** NO FILE **********
up 20190603062824 ********** NO FILE **********
up 20190606172629 ********** NO FILE **********
up 20190607074100 ********** NO FILE **********
up 20190607122350 ********** NO FILE **********
up 20190607140214 ********** NO FILE **********
up 20190608082804 ********** NO FILE **********
up 20190609051100 Add omniauth to users
up 20190611115405 ********** NO FILE **********
up 20190612071933 Create table carousels
up 20190612100433 ********** NO FILE **********
up 20190613082404 ********** NO FILE **********
up 20190614131413 ********** NO FILE **********
up 20190615161828 ********** NO FILE **********
up 20190617154212 Create district
up 20190617154602 Create province
up 20190619140034 Create ward
up 20190620134528 ********** NO FILE **********
down 20190620140214 Convert tables to utf8 v1
up 20190622123753 ********** NO FILE **********
答案 0 :(得分:0)
在更改所有迁移时,您创建了“新”迁移。 0.0
试图将这些“新”迁移应用于已存在的数据库。 (已应用的迁移列表保存在rails db:migrate
表中)。我们可以看到所有schema_migrations
迁移都是尚未应用的。包括down
。
由于这是一个正在运行的生产数据库,因此推测down 20190306060545 Create product
表已经存在。当Rails运行迁移product
(可能尝试进行20190306060545 Create product
时,它将失败,因为create_table :product
已经存在。
避免这种情况的一种方法是,首先检查表是否存在于“创建表”迁移中。如果可以,则什么也不做。
product
要在开发中重现此事...
if table_exists?(:product)
return
end
rails db:migrate:reset