从sqlite转换为postgresql

问题描述:

你好我开始我的rails应用程序使用sqlite,但是当我尝试在heroku上部署它时,我发现我需要使用postgreSQL。所以我经历了麻烦,改变我的gemfile和database.yml文件并创建新的postgresql数据库。然而,当我尝试迁移我的数据库中,我得到的错误:从sqlite转换为postgresql

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

LINE 1:ALTER TABLE“问题” ADD“quiz_id”参考

那可能是因为我使用的参考,可在关系我的分数

我基本上寻找这种情况的修复。

这里是我的迁移(如果它的事项):

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 

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

编辑新的问题: 当我的Heroku的服务器上也有一些死页,但是当我不在我的本地服务器上运行。这里是我的heroku地址:https://krisquiz.herokuapp.com/

死网页是当你提交一个问题,当你尝试并开始一个测验。我看着这些网站,他们看起来很正常。我能想到的两个页面的唯一共同点是我为链接手动构建了url(例如:request.base_url +'/ quiz /'+ quiz.id.to_s +'/ start')。因为我不确定我需要给你什么信息,只要告诉我,我会尽力快速回复你。

+0

什么是您的迁移是什么样子?这听起来像是你的迁移有问题,就像你试图修改一个不存在的表的列一样。 – hightempo

+0

嗯,我没有创建任何新的迁移,因为我改变(或至少尝试改变数据库)所有的迁移工作回来时,我在sqlite,所以我猜想问题是在postgresql。无论哪种方式,这里是我的迁移(我会编辑他们到我的问题) –

使用integer类型,而不是references

add_column :questions, :quiz_id, :integer 
+0

对不起,我不认为我理解。不引用类型(如整数,字符串..)。另外我似乎无法找到你提到的文件。 –

+0

@КрисиСтоянов我修复了我的答案 – itsnikolay

+0

谢谢你的诀窍:) –