待迁移错误|无法删除Dupe迁移

时间:2015-09-22 15:33:56

标签: ruby-on-rails ruby terminal

我正在尝试运行rails服务器并遇到此错误:

Migrations are pending. To resolve this issue, run: bin/rake db:migrate RAILS_ENV=development

有问题的数据库目前是空的,所以不用担心丢失数据。当我运行代码时:

bundle exec rake db:migrate

RAILS_ENV=development rake db:migrate

rake db:migrate

我收到错误:

rake aborted!
ActiveRecord::DuplicateMigrationNameError: 

Multiple migrations have the name CreatePosts


Tasks: TOP => db:migrate
(See full trace by running task with --trace)

运行服务器时,会返回到我的终端:

Started GET "/" for ::1 at 2015-09-22 11:30:34 -0400

ActiveRecord::PendingMigrationError (

Migrations are pending. To resolve this issue, run:

bin/rake db:migrate RAILS_ENV=development

):

最后,运行rake db:migrate:status会返回:

Schema migrations table does not exist yet.

可能会发生什么?非常感谢任何帮助!

migrate:status命令

之后输出bin/rake
 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20150922142819  Devise create users
   up     20150922143253  Create posts
  down    20150922143414  Create posts
  down    20150922145906  Acts as votable migration
  down    20150922150209  Create comments
  down    20150922151035  Acts as follower migration

2 个答案:

答案 0 :(得分:2)

您必须在运行迁移之前创建数据库架构/结构。 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>会为您执行此操作:

db:schema:load

至于错误“多次迁移的名称为CreatePosts” - 就像它说的那样。在文件中查看文件中名称为bin/rake db:schema:load 的两个文件的db/migrate文件夹的内容 - 它们的名称应不同,如果它们是重复的,则应删除第二个文件。

答案 1 :(得分:0)

您似乎有多个具有相同名称的迁移。这是不允许的。如果您的数据库是空的,没有表,那么最好的计划是重命名第二个,这样它们就不再发生冲突了。

显然文件名是唯一的,但每个迁移文件都定义了一个类,这些类也必须是唯一的,并且应该与文件名匹配。

201509201949343_create_posts201509220293910_create_posts将成为典型的冲突。

您可能想要调查一下这是怎么回事,因为您的开发架构与生产架构不同通常是一个坏主意。在本地解决冲突后,请尝试相应地更新生产中的模式跟踪表。

相关问题