【发布时间】:2017-10-11 20:35:27
【问题描述】:
我正在使用 Rails 5 和 PostGres 9.5。我已经创建了这个迁移
class CreateSearchCodeTable < ActiveRecord::Migration[5.0]
def change
create_table :search_codes do |t|
t.string :code
t.references :address, index: true, foreign_key: true, on_delete: :cascade
t.index ["code"], name: "index_search_codes_on_code", unique: true, using: :btree
end
end
end
但地址表的 ID 列不是整数。也许出于这个原因,我在运行迁移时收到以下错误
== 20171011202623 CreateSearchCodeTable: migrating ============================
-- create_table(:search_codes)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
PG::DatatypeMismatch: ERROR: foreign key constraint "fk_rails_6bd9792e3b" cannot be implemented
DETAIL: Key columns "address_id" and "id" are of incompatible types: integer and character varying.
: CREATE TABLE "search_codes" ("id" serial primary key, "code" character varying, "address_id" integer, CONSTRAINT "fk_rails_6bd9792e3b"
FOREIGN KEY ("address_id")
REFERENCES "addresses" ("id")
)
如何指示我的迁移创建与引用列具有相同类型的列?
【问题讨论】:
-
我猜你必须手动执行此操作
t.string :address_id并在创建表块之后add_foreign_key :seach_codes, :adresses
标签: postgresql foreign-keys migration ruby-on-rails-5