Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Heroku上出现重复表错误-表已存在,但迁移表示关闭-在本地工作_Ruby On Rails_Heroku - Fatal编程技术网

Ruby on rails Heroku上出现重复表错误-表已存在,但迁移表示关闭-在本地工作

Ruby on rails Heroku上出现重复表错误-表已存在,但迁移表示关闭-在本地工作,ruby-on-rails,heroku,Ruby On Rails,Heroku,我创建了一个users表,并将其迁移到Heroku,效果很好。我试图添加一个管理表,但出现了一些问题,我不知道发生了什么。users和admins表在我的本地环境中工作正常,但当我将迁移推送到Heroku时,我得到一个错误,即users表已经创建: 迁移到DesiveCreateUsers(2015119150443) ==2015119150443设备创建用户:正在迁移================================ --create_table(:users)PG::dupl

我创建了一个users表,并将其迁移到Heroku,效果很好。我试图添加一个管理表,但出现了一些问题,我不知道发生了什么。users和admins表在我的本地环境中工作正常,但当我将迁移推送到Heroku时,我得到一个错误,即users表已经创建:

迁移到DesiveCreateUsers(2015119150443) ==2015119150443设备创建用户:正在迁移================================ --create_table(:users)PG::duplicate table:错误:关系“users”已存在:create table“users”(“id”序列主键, “电子邮件”字符变化(255)默认值“”不为空, “加密密码”字符变化(255)默认值“”不为空, “重置密码令牌”字符变化(255), 重置密码发送时间戳,记住创建时间戳, “sign\u in\u count”整数默认值0不为空,“current\u sign\u in\u at” 时间戳,“时间戳处的最后一次签名”,当前签名“ip”字符 变量(255),“ip中的最后一个符号”字符变量(255),“创建于” 时间戳不为空,“在时间戳不为空时更新”rake中止! StandardError:发生了一个错误,包括此迁移和所有以后的迁移 取消:

PG::DuplicateTable:错误:关系“用户”已存在:创建 表“用户”(“id”序列主键,“电子邮件”字符变化(255) 默认“”不为NULL,“加密的\u密码”字符变化(255) 默认“”不为空,“重置密码\u令牌”字符变化(255), 重置密码发送时间戳,记住创建时间戳, “sign\u in\u count”整数默认值0不为空,“current\u sign\u in\u at” 时间戳,“时间戳处的最后一次签名”,当前签名“ip”字符 变量(255),“ip中的最后一个符号”字符变量(255),“创建于” 时间戳不为空,“在”时间戳不为空时更新) /app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.1.8/lib/active\u record/connection\u adapters/postgresql/database\u statements.rb:128:in `异步执行'

这是我在本地检查迁移状态时所说的:

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20151103020350  Create restaurants
   up     20151119150443  Devise create users
   up     20160809004949  Devise create admins
heroku上的迁移状态:

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20151030033303  ********** NO FILE **********
   up     20151102165952  ********** NO FILE **********
   up     20151102170119  ********** NO FILE **********
   up     20151103020350  Create restaurants
   up     20151103160832  ********** NO FILE **********
   up     20151103170143  ********** NO FILE **********
   up     20151105172014  ********** NO FILE **********
   up     20151114043509  ********** NO FILE **********
  down    20151119150443  Devise create users
  down    20160809004949  Devise create admins
当我进入Heroku控制台时,它显示我有2个用户,因此用户表已迁移,但迁移状态显示为关闭


我不介意丢失用户表中的数据,但我真的不想丢失餐馆表中的数据。不确定如何修复此问题。

我认为由于不同的迁移或自定义操作,您的数据库已经拥有了该表

通过命令行试试这个,它对我有用

rake db:drop
rake db:create
rake db:migrate

我认为由于不同的迁移或自定义操作,您的数据库已经有了这个表

通过命令行试试这个,它对我有用

rake db:drop
rake db:create
rake db:migrate

Desive为您创建用户表。您只需要在Desive自己创建的列之上添加应用程序需要的任何列。在本例中,您确实在尝试创建一个designe已经创建的表。@MarsAtomic-我使用designe创建用户表,它工作得很好。我试图添加一个管理表,但它无法工作,因为它出于某种原因显示了用户迁移,即使我运行了迁移。我不知道为什么会发生这种情况,也不知道如何在不丢失所有数据的情况下修复它。问题是,除了
rails g designe user
之外,您不应该为创建用户表进行任何迁移。如果您有其他字段要添加到用户表中,那么您将有
'rails g migration AddWhateverToUsers
,然后是
rails g designe admin
为管理员添加designe。看起来您确实在尝试根据发布的迁移创建两次users表。请查看Deviate。Deviate将为您创建用户表。您只需要在Desive自己创建的列之上添加应用程序需要的任何列。在本例中,您确实在尝试创建一个designe已经创建的表。@MarsAtomic-我使用designe创建用户表,它工作得很好。我试图添加一个管理表,但它无法工作,因为它出于某种原因显示了用户迁移,即使我运行了迁移。我不知道为什么会发生这种情况,也不知道如何在不丢失所有数据的情况下修复它。问题是,除了
rails g designe user
之外,您不应该为创建用户表进行任何迁移。如果您有其他字段要添加到用户表中,那么您将有
'rails g migration AddWhateverToUsers
,然后是
rails g designe admin
为管理员添加designe。看起来您确实在尝试根据发布的迁移创建两次users表。请检查设备。如果我这样做,我将丢失所有数据。哦,是的,这将恢复并再次创建您的数据库存储。请添加每个涉及用户和管理员的迁移的初始行,好吗?或者在db/schema中查找表中的冲突。如果我这样做,我将丢失所有数据。哦,是的,这将恢复并再次创建数据库存储。请添加每个涉及用户和管理员的迁移的初始行,好吗?或者在db/schema中查找表中的一些冲突。