2016-05-10 8 views
1

Meine App funktioniert gut in der Produktion, aber wenn ich in die Produktion und laufen 'Heroku Run Rake db: migrieren', Ich erhalte den folgenden Fehler:Heroku/Rails: PG :: Undefinierte Tabelle: Fehler "[Tabellenname]" existiert nicht auf Heroku Schienen Migration

PG::UndefinedTable: ERROR: table "applications" does not exist 
    Migrating to DropApplications (20160509013805) 
     (0.8ms) BEGIN 
    == 20160509013805 DropApplications: migrating    ================================= 
    -- drop_table(:applications) 
     (1.1ms) DROP TABLE "applications" 
     (0.5ms) ROLLBACK 
    rake aborted! 
    StandardError: An error has occurred, this and all later migrations canceled: 

    PG::UndefinedTable: ERROR: table "applications" does not exist 
    : DROP TABLE "applications" 

Allerdings gibt es eine 'Anwendungen' Tabelle in meiner Datenbank. Der Tropfen hat vielleicht etwas damit zu tun, als ich neulich das Anwendungsgerüst fallen ließ und neu erstellte. Wie behebe ich das?

 create_table "applications", force: :cascade do |t| 
t.string "name" 
t.string "gender" 
t.date  "date_of_birth" 
t.string "gpa" 
t.text  "essay" 
t.datetime "created_at", null: false 
t.datetime "updated_at", null: false 
     end 

Also, wenn ich laufen rake ausführen: db-Setup, sehe ich die folgenden Ergebnisse:

 Status Migration ID Migration Name 
    -------------------------------------------------- 
     up  20160505200754 ********** NO FILE ********** 
     up  20160508234634 Create users 
     up  20160508234945 Add devise to users 
     up  20160509013805 ********** NO FILE ********** 
     up  20160509014328 ********** NO FILE ********** 
     20160509014911 Create applications 

Die beiden vor "erstellen Anwendungen" Ich habe versucht, zu löschen. Also, ich versuche, die Heroku db wie folgt zu harken: $ Heroku run Rake --trace db: migrieren VERSION = 20151127134901, aber ich bekomme immer noch den Fehler mit den "Drop-Tabellen" - es versucht, die 20160509013805 Migrationen zu tun. Wie lösche ich diese Migrationen vollständig, wenn keine Datei angegeben ist, sodass sie nicht versucht, auch diese zu rechen? Vielen Dank im Voraus.

+1

hilft das? http://stackoverflow.com/a/34321825/981616 – uday

+0

Das hilft und bringt mich auf den richtigen Weg ... denke ich. Ich habe gerade den ursprünglichen Beitrag aktualisiert, werfen Sie einen Blick, wenn Sie können –

+0

Die Antwort hinzugefügt, bitte überprüfen und lassen Sie es mich wissen. – uday

Antwort

4

Möglicherweise liegt ein Problem in Ihren Migrationsdateien vor. Wenn Sie eine Datei gelöscht haben, aber eine andere Datei vorhanden ist, kann dieser Fehler auftreten. Ich hätte kommentiert, aber ich habe noch nicht den Ruf.

+0

Check out my original post Ich habe es gerade aktualisiert –

+0

Das sind verwaiste Migrationen. Um es zu lösen, können Sie Ihren Ordner 'db/migrate /' löschen (schema.rb nicht löschen) und 'rake db: schema: load' oder' rake db: setup' ausführen. Alternativ gibt es ein Juwel, aber ich habe es noch nie ausprobiert: https://github.com/jalkoby/squasher Sie können diese SO Frage auch überprüfen: http://stackoverflow.com/questions/16041790/what-is-the- best-way-to-resolve-rails-orlanded-migrations – Yimanei

+0

Ihr Problem mit verwaisten Migrationen ist jetzt gelöst. Sie verfügen jedoch nicht über einen Benutzer mit Berechtigungen zum Erstellen einer Datenbank. PG ist nicht richtig eingerichtet und kann nicht fortfahren. Es ist ein häufiges Problem mit verschiedenen Lösungen, abhängig von Ihrer Umgebung. Sie müssen Ihren Benutzernamen und Ihr Passwort bei Bedarf (verstecken Sie es in Umgebungsvariablen) zu 'database.yml' angeben. Siehe http://stackoverflow.com/questions/11919391/postgresql-error-fatal-role-username-does-not-exist?rq=1 und http://stackoverflow.com/questions/17633422/psql-fatal- database-user-does-not-exist? rq = 1 für Lösungsbeispiele. – Yimanei

1

Zurücksetzen Heroku db:

Heroku nicht db fallen lässt. Stattdessen sollten Sie heroku pg:reset tun. Diese Befehle Bedürfnisse Sie die Datenbank angeben, die von heroku pg:info, gefunden werden kann, dann werden Sie eine Ausgabe wie unten erhalten:

=== DATABASE_URL 
Plan:  Hobby-dev 
Status:  Available 
Connections: 0/20 
PG Version: 9.4.4 
Created:  2015-10-11 23:14 UTC 
Data Size: 6.7 MB 
Tables:  5 
Rows:  0/10000 (In compliance) 
Fork/Follow: Unsupported 
Rollback: Unsupported 
Add-on:  postgresql-cubed-1838 

Sobald Sie die Ausgabe erhalten oben wie die pg Heroku verwenden: Reset-Befehl mit den „Add- Anhängen auf "Feldwert. Beispiel würde ich das tun:

$ heroku pg:reset postgresql-cubed-1838 
Verwandte Themen