rake db : migrate를 사용하여 한 단계 만 롤백하는 방법


197

db/migrate폴더에 마이그레이션 파일을 추가 하고를 실행 한 후 rake db:migrate이전 단계로 돌아가고 싶습니다.을 사용하는 VERSION=n것이 올바른 방법 이라고 생각 하지만 사용할 올바른 n 값을 모릅니다. 현재 n 값을 확인하는 명령이 있습니까?

누구나 사용 방법에 대한 전체 지침을 제공 할 수 있다면 좋을 것 rake db:migrate입니다.

답변:


358

초보자를위한

rake db:rollback 한 걸음 뒤로 돌아올 것입니다

그때

rake db:rollback STEP=n

당신 롤백 것 n마이그레이션 n이 롤백하려는 최근 마이그레이션의 수입니다.

더 많은 참조는 여기에 있습니다 .


95

가장 최근의 마이그레이션을 롤백하십시오.

rake db:rollback

n가장 최근의 마이그레이션을 롤백하십시오 .

rake db:rollback STEP=n

마이그레이션 실행 에 대한 Rails Guide 에서 Rails 마이그레이션 작업 사용에 대한 전체 지침을 찾을 수 있습니다 .


몇 가지 더 있습니다 :

  • rake db:migrate -아직 실행되지 않은 모든 마이그레이션을 실행
  • rake db:migrate VERSION=20080906120000 -필요한 모든 마이그레이션 (위 또는 아래)을 실행하여 지정된 버전으로 이동
  • rake db:migrate RAILS_ENV=test -주어진 환경에서 마이그레이션을 실행합니다
  • rake db:migrate:redo -하나의 마이그레이션을 롤백하고 다시 실행하십시오.
  • rake db:migrate:redo STEP=n-마지막 n마이그레이션을 롤백 하고 다시 실행하십시오.
  • rake db:migrate:up VERSION=20080906120000- up주어진 마이그레이션에 대한 방법을 실행
  • rake db:migrate:down VERSION=20080906120000- down주어진 마이그레이션에 대한 방법을 실행

그리고 다음에서 마이그레이션 버전 번호를 얻는 위치에 대한 질문에 답변하십시오.

버전은 마이그레이션 파일 이름의 숫자 접두사입니다. 예를 들어, 20080906120000 버전으로 마이그레이션하려면 다음을 실행하십시오.

$ rake db:migrate VERSION=20080906120000

( Rails Guides에서 마이그레이션 실행 에서)


2
rake db : rollback이 가장 최근의 마이그레이션을 롤백하기 위해 작동하지 않았을 때, rake db : migrate VERSION = <최종 버전 날짜>를 사용해야했고 제대로 작동했습니다.
Omni

8

가장 좋은 방법은 down 또는 up을 사용하여 특정 마이그레이션을 다시 실행하는 것입니다 (레일 4).

레일 db : migrate : up VERSION = 타임 스탬프

이제 타임 스탬프를 얻는 방법 이 길로 이동

/ db / 마이그레이션

되돌리려는 마이그레이션 파일을 식별하고 해당 파일 이름에서 타임 스탬프를 선택하십시오.


이것이 질문에 대답하지는 않지만 실제로 가장 좋은 방법입니다. 단계별로 롤백하면 특히 그룹의 소프트웨어를 작업 할 때 실수가 발생할 수 있습니다.
강철

5

버전이 인 20150616132425경우 다음을 사용하십시오.

rails db:migrate:down VERSION=20150616132425

1

다른 사람들이 롤백 방법에 대해 이미 답변했지만 마이그레이션 버전 번호를 식별하는 방법도 물었습니다.

  • rake db:migrate:status 마이그레이션 버전, 이름 및 상태 (위 또는 아래) 목록을 제공합니다.
  • 파일 이름에 타임 스탬프가 포함 된 마이그레이션 파일 (버전 번호)도 찾을 수 있습니다. 마이그레이션은 다음 폴더에 있습니다./db/migrate

그런데 status 명령을 실행하면 다음과 같은 행이 표시 될 수 있습니다. ********** NO FILE ********** 이러한 마이그레이션은 현재 분기에 존재하지 않습니다. 자식
BjarneD
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.