heroku запустить rake db: ошибка миграции

Я хочу выполнить миграцию в своем приложении, которое у меня есть на героку, но я получаю эту ошибку:

Running `rake db:migrate` attached to terminal... up, run.1
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/Rakefile:7)
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/Rakefile:7)
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/Rakefile:7)
Migrating to CreateUsers (20120525005302)
Migrating to DeviseCreateUsers (20120611000411)
==  DeviseCreateUsers: migrating ==============================================
-- create_table(:users)
rake aborted!
An error has occurred, this and all later migrations canceled:

PGError: ERROR:  relation "users" already exists
: CREATE TABLE "users" ("id" serial primary key, "email" character varying(255) DEFAULT '' NOT NULL, "encrypted_password" character varying(255) DEFAULT '' NOT NULL, "reset_password_token" character varying(255), "reset_password_sent_at" timestamp, "remember_created_at" timestamp, "sign_in_count" integer DEFAULT 0, "current_sign_in_at" timestamp, "last_sign_in_at" timestamp, "current_sign_in_ip" character varying(255), "last_sign_in_ip" character varying(255), "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 

Tasks: TOP => db:migrate

У меня есть следующие файлы миграции в моем репозитории github

  1. 20120525005302_create_users.rb (пустой, не знаю как удалить)
  2. 20120611000411_devise_create_users.rb
  3. 20120613140535_create_authentications.rb

person Community    schedule 13.06.2012    source источник


Ответы (2)


Похоже, верно следующее:

  • 20120525005302_create_users.rb попытается создать users таблицу в вашей базе данных.
  • 20120611000411_devise_create_users.rb также попытается создать таблицу users в базе данных.
  • В настоящее время в вашей базе данных уже есть таблица users, поэтому миграция завершается ошибкой при второй миграции.

Чтобы таблица users в вашей базе данных соответствовала миграции 20120611000411_devise_create_users.rb, вы можете сделать одно из двух:

  1. Откатите (или удалите) базу данных, а затем снова запустите миграцию. (Вы можете удалить 20120525005302_create_users.rb, если он пуст.)
  2. Измените миграцию 20120611000411_devise_create_users.rb, чтобы удалить любую существующую таблицу users, прежде чем делать что-либо еще.
  3. Modify your 20120611000411_devise_create_users.rb migration as follows:
    • Instead of creating a users table, modify the existing table.
    • Добавляйте и изменяйте компоненты базы данных, чтобы они соответствовали

Как правило, если ваше приложение находится в «зачаточном состоянии», повторное создание базы данных, как правило, является быстрым способом построения исходной структуры приложения. Однако, если у вас уже есть важные данные в таблице users, вы можете сохранить их и продолжить, изменив миграцию 20120611000411_devise_create_users.rb, чтобы изменить базу данных неразрушающим образом.

Ссылки

person fdsaas    schedule 13.06.2012
comment
Я откатил всю миграцию, у меня нет первой миграции, и я отправил все на github, но все еще там. - person ; 14.06.2012
comment
Теперь я удалил файл миграции, все равно получаю ту же ошибку. - person ; 14.06.2012
comment
Похоже, самым простым подходом было бы применить изменения к базе данных вашего сервера из новой базы данных. Кроме того, если вы измените поведение 20120611000411_devise_create_users.rb, хорошей практикой будет изменить его имя, чтобы отразить поведение (то есть что-то вроде 20120611000411_devise_modify_users.rb или что-то в этом роде). - person fdsaas; 16.06.2012

Похоже, у вас уже есть пользователи таблицы (вероятно, из миграции create_users), которых device_create_users пытается воссоздать.

Вы можете изменить миграцию create_device_users, просто добавив нужные поля.

В качестве альтернативы, если это совершенно новое приложение без пользователей, вы можете просто удалить и попробовать повторно запустить все миграции.

person Yuriy Goldshtrakh    schedule 13.06.2012
comment
Я не могу просто удалить эту миграцию из своего приложения и github соответственно. Как мне это сделать? - person ; 14.06.2012
comment
git rm 20120525005302_create_users.rb git push origin master heroku run rake db: drop heroku run rake db: create heroku run rake db: migrate - person Yuriy Goldshtrakh; 14.06.2012