programing

Rails 5 이행 데이터 유형의 문제

yoursource 2022. 9. 16. 21:15
반응형

Rails 5 이행 데이터 유형의 문제

저는 원래 Postgre를 사용하여 레일5 어플리케이션을 개발했습니다.SQL. 호스팅 문제로 모든 개발을 마친 후 MariaDB로 전환해야 했습니다.

장바구니에서 관리자에 대한 참조를 추가하는 업데이트를 하려고 합니다.이행은 다음과 같습니다.

class AddAdminRefToCart < ActiveRecord::Migration[5.1]
  def change
    add_reference :carts, :admin, foreign_key: true
  end
end

내가 달릴 때

rake db:migrate

다음의 에러가 표시됩니다.

== 20171129152942 AddAdminRefToCart: migrating ================================
-- add_reference(:carts, :admin, {:foreign_key=>true})
rake aborted!
StandardError: An error has occurred, all later migrations canceled:

Column `admin_id` on table `carts` has a type of `bigint(20)`.
This does not match column `id` on `admins`, which has type `int(11)`.
To resolve this issue, change the type of the `admin_id` column on `carts` to be :integer. (For example `t.integer admin_id`).

에러는 일리가 있지만, 적절한 문제 해결 방법을 모르겠습니다.누가 이행을 어떻게 작성해야 하는지 안내 좀 해주시겠어요?잘 부탁드립니다!

원하는 데이터 유형을 지정하기만 하면 됩니다.add_reference.

add_column :carts, :admin_id, :integer, limit: 4
add_foreign_key :carts, :admins

limit: 4파라미터는 데이터베이스에 대해 INT에 대응하는4 바이트 필드를 생성하도록 지시합니다.limit: 8(지금은 디폴트인 것 같습니다), BIGINT에 대응합니다.

코멘트에서도 언급했듯이, 이 기능을 사용하지 않는 것으로 문제가 발생하는 것은 아닙니다.add_reference,부터add_reference'통사설탕'일단 '통설탕'이다.add_column옵션으로,add_index그리고.add_foreign_key.

언급URL : https://stackoverflow.com/questions/47556557/rails-5-migration-data-type-issue

반응형