PG :: DuplicateColumn: ERROR: столбец "product_id" отношения "users" уже существует - PullRequest
0 голосов
/ 22 июня 2019

Я видел этот вопрос, опубликованный несколько раз, и решение всегда состоит в том, чтобы удалить базу данных и воссоздать ее. У меня есть данные в моей базе данных, и поэтому я не хочу этого делать.

Схема:

create_table "users", force: :cascade do |t|
    t.string "email", default: "", null: false
    t.string "encrypted_password", default: "", null: false
    t.string "reset_password_token"
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.string "product_id"

  end

Мой второй до последнего файл миграции:

class AddProductIdToUsers < ActiveRecord::Migration[5.2]
  def change
    add_column :users, :product_id, :string
  end
end

У меня нет другого файла миграции, который создает столбец product_id в моей текущей ветви.

У меня есть несколько веток с различной схемой базы данных. Мне интересно, если это вызвало проблему. Ветвь, которая могла создать product_id, доступна только для справки. Он не будет объединен с мастером.

Как мне исправить эту проблему? Я пробовал:

rake db:rollback step=3  
rake db:migrate

но это не сработало.

1 Ответ

0 голосов
/ 22 июня 2019

Ваш create_table уже создает produdct_id внутри базы данных.

create_table "users", force: :cascade do |t|
    t.string "email", default: "", null: false
    t.string "encrypted_password", default: "", null: false
    t.string "reset_password_token"
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.string "product_id" // <- note this line

  end

И вы пытаетесь добавить еще один столбец с тем же именем в вашу таблицу, что вызывает ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...