Ошибка миграции после изменения идентификатора пользователя на UUID - PullRequest
0 голосов
/ 28 января 2019

Я изменил свой идентификатор пользователя на UUID и изменил несколько таблиц, связанных с user_id.Однако для некоторых таблиц, таких как поток, я получаю следующую ошибку.Кто-нибудь знает, как обойти, пожалуйста?

-- change_column(:streams, :user_id, :string)
   (18.1ms)  ALTER TABLE "streams" ALTER COLUMN "user_id" TYPE character varying
   (1.0ms)  ROLLBACK
   (1.3ms)  SELECT pg_advisory_unlock(740533580701532625)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

PG::DatatypeMismatch: ERROR:  foreign key constraint "fk_rails_bb64178f90" cannot be implemented
DETAIL:  Key columns "user_id" and "id" are of incompatible types: character varying and bigint.
: ALTER TABLE "streams" ALTER COLUMN "user_id" TYPE character varying

1 Ответ

0 голосов
/ 28 января 2019

Следующие шаги помогли решить проблему:

class ConvertTableWithUserToString < ActiveRecord::Migration[5.1]
  def change
    add_column :users, :uuid, :uuid, default: "gen_random_uuid()", null: false
    remove_foreign_key :streams, column: :user_id
    change_table :users do |t|
      t.remove :id
      t.rename :uuid, :id
    end
    execute "ALTER TABLE users ADD PRIMARY KEY (id);"
    change_column :streams, :user_id, :string
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...