2016-07-15 4 views
1

, когда я иду к моему http://localhost:3000/ я получаю следующее:Rails: ошибки миграции

ActiveRecord::PendingMigrationError

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

Добывается Источник:

# Raises <tt>ActiveRecord::PendingMigrationError</tt> error if any migrations are pending. 
def check_pending!(connection = Base.connection) 
    raise ActiveRecord::PendingMigrationError if ActiveRecord::Migrator.needs_migration?(connection) 
end 
def load_schema_if_pending! 

Кроме того, когда я пытался в heroku run rake db:migrate в консоли, то сказал:

StandardError: An error has occurred, this and all later migrations canceled: PG::DuplicateColumn: ERROR: column "email" of relation "users" already exists

Я новичок в рубин и последовал devise tutorial на Mac kenzie Ребенок. Это мой последний шаг для завершения моего первого рубинового приложения.

Я очень рад и с нетерпением жду вашей помощи! :)

ответ

0

Вы используется генератор DEViSE для подготовки миграции для User модели. Ваша модель уже была установлена ​​до и уже имела столбец email. Разрабатывают сгенерированных миграции пытается создать ту же колонку и, ожидаемо, не удается, это причина ошибки вы видите:

PG::DuplicateColumn: ERROR: column "email" of relation "users" already exists

Чтобы исправить это просто открыть DEViSE сгенерированных миграцию и удалить строку, которая выглядит что-то вроде этого:

t.string :email... 

Затем запустить rake db:migrate.

UPDATE

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

Run

rake db:drop db:create db:migrate 

Обратите внимание, что будут уничтожены все данные базы данных.

+0

Я попробовал и все еще получаю сообщение об ошибке после rake db: migrate, который выглядит так: 10 rake aborted! StandardError: Произошла ошибка, это и все последующие миграции отмененные: SQLite3 :: SQLException: дублирует имя столбца: encrypted_password: ALTER TABLE "пользователей" ADD "encrypted_password" VARCHAR DEFAULT '' NOT NULL /Users/matthiascordes /. rvm/gems/ruby-2.3.1/gems/sqlite3-1.3.11/lib/sqlite3/database.rb: 91: в 'initialize ' /Users/matthiascordes/.rvm/gems/ruby-2.3.1/gems /sqlite3-1.3.11/lib/sqlite3/database.rb:91:in 'new ' ...и т. д. –

+0

, а также это вместо: SQLite3 :: SQLException: нет такой таблицы: пользователи: ALTER TABLE "users" ADD "encrypted_password" varchar DEFAULT '' NOT NULL –

+0

См. обновление к моему ответу. –

1

В вашей консоли запуска rake db:migrate Убедитесь, что вы в директории проекта

+0

Я мог бы добавить, что запуск 'heroku run rake db: migrate' запускает миграцию на Heroku, а не на ваш localhost. Такие ошибки, как «PG :: DuplicateColumn: ERROR: столбец« email »отношения« пользователи »уже существуют» обычно происходят из-за изменения имени или версии миграции. – Leito

+0

К сожалению, это не помогло. Когда я делаю это, я получаю: «rake aborted! StandardError: Произошла ошибка, эта и все последующие миграции были отменены:« Ater that: »SQLite3 :: SQLException: дублированное имя столбца: email: ALTER TABLE" пользователи "ADD" email "varchar DEFAULT '' NOT NULL" А потом много hundrets строк о SQLite3 и activerecord –