2016-07-15 6 views
1

, wenn ich gehe zu meinem http://localhost:3000/ erhalte ich folgendes:Rails: Migration Fehler

ActiveRecord::PendingMigrationError

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

Extrahiert Quelle:

# 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! 

Auch wenn ich versuchte, die heroku run rake db:migrate in der Konsole es, sagte:

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

ich bin neu in ruby ​​und folgte dem devise tutorial von Mac Kenzie Kind. Es ist mein letzter Schritt, um meine erste Ruby-Anwendung fertigzustellen.

Ich bin aufgeregt und freue mich auf Ihre Hilfe! :)

Antwort

0

Sie devise Generator verwendet, um die Migration für Ihre User Modell vorzubereiten. Ihr Modell war bereits vor Ort und hatte bereits eine email Spalte. Ersinnen generierten Migration versucht, den gleichen Spalte und expectedly zu erstellen, fehlschlägt, das ist der Grund für den Fehler Sie sehen:

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

Um das zu beheben, öffnen Sie einfach Ihre devise generierten Migration und entfernen Sie die Zeile, die aussieht so etwas wie dieses:

t.string :email... 

Dann rake db:migrate laufen.

UPDATE

Da Ihre Datenbank nicht synchron mit Migrationen zu sein scheint, könnte es ratsam sein, es von Grund auf neu zu erstellen.

Run

rake db:drop db:create db:migrate 

Beachten Sie, dass alle Daten in der Datenbank zerstört wird.

+0

Ich habe es versucht und immer noch einen Fehler nach Rake db: migrate, die wie folgt aussieht: Rake abgebrochen! StandardError: Ein Fehler ist aufgetreten, diese und alle späteren Migrationen wurden abgebrochen: SQLite3 :: SQLException: doppelter Spaltenname: chiffriertes_passwort: ALTER TABLE "Benutzer" ADD "chiffriertes Kennwort" varchar DEFAULT '' NOT NULL /Benutzer/matthiascordes /. rvm/edelsteine ​​/ ruby-2.3.1/edelsteine ​​/ sqlite3-1.3.11/lib/sqlite3/datenbank.rb: 91: in 'initialize ' /Users/matthiascordes/.rvm/gems/ruby-2.3.1/gems /sqlite3-1.3.11/lib/sqlite3/database.rb:91:in 'neu ' ...und so weiter –

+0

und auch dies stattdessen: SQLite3 :: SQLException: keine solche Tabelle: Benutzer: ALTER TABLE "Benutzer" ADD "verschlüsselte_Kennwort" varchar DEFAULT '' NOT NULL –

+0

Siehe das Update zu meiner Antwort. –

1

In der Konsole laufen rake db:migrate Vergewissern Sie sich im Projektverzeichnis

+0

Ich könnte hinzufügen, läuft 'heroku run Rake db: migrate' läuft die Migration auf Heroku, nicht in Ihrem localhost. Fehler wie "PG :: DuplicateColumn: FEHLER: Spalte" E-Mail "der Beziehung" Benutzer "existieren bereits" werden normalerweise durch Ändern des Migrationsnamens oder der Version verursacht. – Leito

+0

Leider hat es nicht geholfen. Wenn ich das mache, bekomme ich: "Rake abgebrochen! StandardError: Ein Fehler ist aufgetreten, diese und alle späteren Migrationen abgebrochen:" Ater, dass: "SQLite3 :: SQLException: doppelte Spaltenname: E-Mail: ALTER TABLE" Benutzer "ADD" E-Mail "varchar DEFAULT '' NOT NULL" Und dann viele hundert Zeilen über SQLite3 und activecord –