2017-05-04 5 views
5

Rails 5.1.0에는 bigint 기본 키와 외래 키가 도입되었습니다.Rails 5.1.0 업그레이드 방법

모든 새 테이블에는 bigint pk가 있고 이전 테이블에 대한 참조 마이그레이션을 만드는 것은 이전 pk가 일반 int이므로 작동하지 않습니다.

change_column _, :id,:bigint을 사용하면 외래 키가있는 오류만으로 모든 테이블을 찾는 데 필요한 모든 수동 작업과 수정해야 할 키가 있습니다.

bigint pk 및 fk를 사용하기 위해 모든 프로덕션 데이터베이스를 모든 테이블로 마이 그 레이션하려면 어떻게합니까?

생산 이후 Ofcourse는 rails db:drop rails db:setup 옵션이 아닙니다.

+0

가 CHANGELOG에서 난 단지 기본 키가 BIGINT 된 것을 발견 테스트 해달라고해야한다. 외래 키 동작 변경에 대한 링크를 찾으실 수 있습니까? – Ilya

+0

이전 테이블을 참조하는 테이블을 만들려고했는데 이전 테이블에 작은 int pk가 있기 때문에 실패합니다. [5.1]에서 [5.0]로 이주를 변경하면 큰 일을 제외하고는 효과가있었습니다. 그래서 그것은 변화를 말하지 않았지만 그것은 fk에 영향을 미쳤습니다. –

답변

1

나는 동일한 문제에 직면 해있다. fk가 임시로 제거되어야합니다. 목표는 모든 기본 키를 int에서 bigint로 변경하는 것입니다.

당신은 어쩌면 지수 동일한 방식으로 처리하는 모든 테이블과 외래 키 열이, 내가

+0

감사합니다. 예,이 방법이 효과적 일지 모르지만 한 번에 모든 작업을 수행 할 수있는 방법이 없습니까? 또는 bigint 상황을 해제? –

+0

모든 기본 키를 사용하여 자동화 할 수 있지만 더 큰 문제는 기본 키를 가리키는 외래 키 열, 자동화가 가능하지만 더 어렵다는 것입니다. 모든 테이블에 대해 루프를 작성하고 primary_key를 변경하고 "_id"로 된 열을 데이터 유형으로 내부에서 "_id"로 변경하십시오. –

+0

테이블이 많아서 숭고한 텍스트 기술을 사용하여 모든 것을 얻을 수 있습니다. 하지만 업그레이드를 위해 많은 수작업을하고 싶지는 않습니다. 나에게 게으름을 불러라. 그러나 나는 레일이 이것을하기위한 전략을 도입해야한다고 느낀다. –