2016-06-20 2 views
1

Hallo Ich habe meine Rails-Anwendung mit sqlite gestartet, aber als ich versucht habe, sie auf heroku zu implementieren, habe ich herausgefunden, dass ich postgreSQL verwenden musste. Also habe ich die Mühe gemacht, meine gemfile und database.yml Datei zu ändern und die neue postgresql Datenbank zu erstellen. Jedoch, wenn ich versuche, meine Datenbank zu migrieren ich den Fehler:Konvertierung von sqlite nach postgresql

ActiveRecord::StatementInvalid: PG::UndefinedObject: ERROR: type "reference" does not exist 

LINE 1: ALTER TABLE „Fragen“ ADD „quiz_id“ Referenz

das wahrscheinlich ist, weil ich eine Referenz verwendet, um eine Beziehung zu machen in mein db

Ich bin im Grunde auf der Suche nach der Lösung für diese Situation.

Hier sind meine Migrationen (wenn es darauf ankommt):

class CreateQuestions < ActiveRecord::Migration 
def change 
    create_table :questions do |t| 
    t.string :question 
    t.string :answer1 
    t.string :answer2 
    t.string :answer3 
    t.string :answer4 
    t.integer :correct_id 

    t.timestamps null: false 
    end 
end 
end 

class CreateQuizzes < ActiveRecord::Migration 
def change 
    create_table :quizzes do |t| 
    t.string :name 
    t.string :subject 

    t.timestamps null: false 
    end 
end 

Ende

class AddQuizIdToQuestions < ActiveRecord::Migration 
    def change 
    add_column :questions, :quiz_id, :reference 
    end 
end 

bearbeiten neue Frage: Wenn auf meinem Heroku Server gibt es einige tote Seiten sind, aber nicht, wenn ich bin läuft auf meinem lokalen Server. Hier ist meine Heroku-Adresse: https://krisquiz.herokuapp.com/

Die toten Seiten sind, wenn Sie eine Frage einreichen und wenn Sie versuchen und starten Sie ein Quiz. Ich schaute auf die URLs und sie sehen richtig aus. Das einzige, was mir für die beiden Seiten einfällt, ist, dass ich die URLs manuell für die Links erstellt habe (zB: request.base_url + '/ quiz /' + quiz.id.to_s + '/ start'). Da ich nicht sicher bin, was ich Ihnen als Information geben muss, sagen Sie es mir einfach und ich werde versuchen, schnell zu Ihnen zurück zu kommen.

+0

Wie sieht Ihre Migration aussehen? Es klingt für mich so, als ob etwas mit Ihrer Migration nicht stimmt, so wie Sie versuchen, eine Spalte einer Tabelle zu ändern, die nicht existiert. – hightempo

+0

Nun, ich habe keine neuen Migrationen erstellt, seit ich alle Migrationen geändert habe (oder wenigstens versucht habe, die Datenbank zu ändern), als ich auf sqlite war, also vermutete ich, dass das Problem in postgresql liegt. So oder so, hier sind meine Migrationen (ich werde sie in meine Frage bearbeiten) –

Antwort

1

Verwenden integer Art statt references

add_column :questions, :quiz_id, :integer 
+0

Entschuldigung, ich glaube nicht, dass ich verstehe. Ist keine Referenz ein Typ (wie Integer, String ..). Außerdem kann ich die von Ihnen erwähnte Datei nicht finden. –

+0

@ КрисиСтоянов Ich reparierte meine Antwort – itsnikolay

+0

danke das tat den Trick :) –