【发布时间】:2018-06-16 23:21:15
【问题描述】:
最近我处理了一个数据库问题,导致我无法运行我的 rails 应用程序。每当我的应用收到请求时,我都会收到以下错误:
ActiveRecord::PendingMigrationError (
Migrations are pending. To resolve this issue, run:
bin/rails db:migrate RAILS_ENV=development
):
我的迁移已经运行,但我还是尝试迁移以解决问题。当我这样做时,我得到了这个错误:
PG::DuplicateTable: ERROR: relation "users" already exists
Rails 似乎正在尝试运行已经运行的迁移!我尝试检查迁移状态,看看是否可以解决这个问题。结果如下:
Status Migration ID Migration Name
--------------------------------------------------
up 20160927153148 ********** NO FILE **********
up 20161004160131 ********** NO FILE **********
up 20161005125752 ********** NO FILE **********
up 20161011181504 ********** NO FILE **********
up 20161014135001 ********** NO FILE **********
up 20161014140631 ********** NO FILE **********
up 20161014143818 ********** NO FILE **********
up 20161014144342 ********** NO FILE **********
up 20161014144530 ********** NO FILE **********
up 20161014144742 ********** NO FILE **********
up 20161014145130 ********** NO FILE **********
up 20161014164935 ********** NO FILE **********
up 20161014164936 ********** NO FILE **********
up 20161014201553 ********** NO FILE **********
up 20161017190913 ********** NO FILE **********
up 20161018131458 ********** NO FILE **********
up 20161018180142 ********** NO FILE **********
up 20161020182715 ********** NO FILE **********
up 20161023171522 ********** NO FILE **********
up 20161027202306 ********** NO FILE **********
up 20161107160642 ********** NO FILE **********
up 20161107185720 ********** NO FILE **********
up 20161108204903 ********** NO FILE **********
up 20161115174824 ********** NO FILE **********
up 20161121201101 ********** NO FILE **********
up 20161122205308 ********** NO FILE **********
up 20170208132901 ********** NO FILE **********
up 20170208183331 ********** NO FILE **********
up 20170209204508 ********** NO FILE **********
up 20170220164639 ********** NO FILE **********
up 20170301174731 ********** NO FILE **********
up 20170302174721 ********** NO FILE **********
down 20170913142804 Create users
down 20170913153749 Add devise to users
down 20170913182252 Create clients
down 20170913183734 Create addresses
down 20170919131420 Update user table
down 20170919150013 Split address type
down 20170919151010 Remove auth tier from user
down 20170919170757 Remove requirement from extended
down 20170921135056 Create client configurations
down 20170922145446 Drop zips
down 20170924220818 Create groups
down 20170924232318 Create permissions
down 20170926132737 Create overrides
down 20171003185617 Create client groups
down 20171003201301 Update address table
down 20171003202611 Create locations
down 20171004143859 Create clients users
down 20171005161331 Add avatar to users
down 20171005163530 Create sites
down 20171107191612 Add deleted at to tables
down 20171110205840 Add is public to sites
down 20171115190716 Add superuser to users
down 20171117153515 Create versions
down 20171117153516 Add object changes to versions
down 20171211154208 Create roles
down 20171211154807 Add roles to users
down 20171211161939 Remove superuser from users
down 20171211163226 Add descriptions to roles
down 20171211190243 Rename scope on roles
down 20171218173758 Devise invitable add to users
down 20171218192514 Add invitation domain to users
正如您在此处看到的,似乎有许多迁移丢失了它们的文件。我不记得删除任何迁移,当然也没有这么多!此外,我们看到所有可识别的迁移,以及带有文件的迁移,都没有运行。就好像迁移都被重命名了,它们的更改完好无损,而它们本身似乎没有运行,但同样没有发生这样的事件。
到此为止,我已经受够了这个问题。鉴于数据库中的数据大部分来自种子文件,我决定将其擦除并重新开始:
rails db:drop
rails db:create
rails db:migrate
但是,我在运行 db:migrate 时遇到了同样的问题。事实上,似乎一切都没有改变。救命!
【问题讨论】:
-
您能否发布数据库删除、创建和迁移的输出,我很想看看那里是否有关于正在发生的事情的任何线索,因为它正在重新发生一个新的数据库!
-
你试过重启你的rails服务器吗?
-
如果您确定您没有更改任何文件并且它们以某种方式被不同地细化,您可以备份您的数据库,然后删除它(rake db:drop)。然后重新创建并转储数据。
-
不知何故,我觉得你的
database.yml这个项目指向另一个 Rails 应用程序的数据库。 -
如果
schema.rb看起来正确并且您的数据库看起来正确,那么您可以删除迁移并继续进行更有趣的事情。
标签: ruby-on-rails database database-migration