2016-06-20 5 views
1

Привет, я начал использовать приложение 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» ссылка

, что, вероятно, потому что я использовал ссылку, чтобы сделать отношения в my db

В основном я ищу исправление для этой ситуации.

Вот мои Миграции (если это имеет значение):

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 сервере есть некоторые мертвые страницы, но не тогда, когда я работающих на моем локальном сервере. Вот мой адрес герою: https://krisquiz.herokuapp.com/

Мертвые страницы - это когда вы отправляете вопрос и когда пытаетесь начать викторину. Я посмотрел на URL-адреса, и они выглядели правильно. Единственное, что я могу придумать для двух страниц, это то, что я создал URL-адреса вручную для ссылок (например: request.base_url + '/ quiz /' + quiz.id.to_s + '/ start'). Поскольку я не уверен, что мне нужно, чтобы дать вам информацию, просто скажите мне, и я постараюсь быстро вернуться к вам.

+0

Что перенастройки выглядеть? Мне кажется, что с вашей миграцией что-то не так, как будто вы пытаетесь изменить столбец таблицы, которая не существует. – hightempo

+0

Ну, я не создал никаких новых миграций, так как я изменил (или по крайней мере пытался изменить базу данных) все миграции, отработанные обратно, когда я был на sqlite, поэтому я догадался, что проблема в postgresql. В любом случае, это мои миграции (я отредактирую их в свой вопрос) –

ответ

1

Использование integer типа вместо references

add_column :questions, :quiz_id, :integer 
+0

Извините, я не думаю, что понимаю. Не ссылается на тип (например, integer, string ..). Кроме того, я не могу найти файл, о котором вы упоминали. –

+0

@ КрисиСтоянов Я исправил свой ответ – itsnikolay

+0

спасибо, что сделал трюк :) –

Смежные вопросы