[RUBY-ON-RAILS] 어떻게 특정 마이그레이션을 롤백?
RUBY-ON-RAILS어떻게 특정 마이그레이션을 롤백?
나는 다음과 같은 마이그레이션 파일 DB \ 마이그레이션 \ 20100905201547_create_blocks.rb이
어떻게 구체적으로 그 이전 파일을 롤백 할 수 있습니까?
해결법
-
==============================
1.
rake db:rollback STEP=1
당신이 롤백하려는 마이그레이션이 적용되는 마지막 인 경우,이 작업을 수행 할 수있는 방법입니다. 당신은 당신이 다시 가고 싶어하지만 많은 마이그레이션 1을 대체 할 수 있습니다.
예를 들면 :
rake db:rollback STEP=5
또한 이상 (4, 3, 2, 또한 1) 일어난 모든 마이그레이션을 롤백 할 것이다.
대상 마이그레이션을 다시 모든 마이그레이션을 롤백 (포함)하려면, 사용 : (이 수정 명령은 모든 의견이 원래의 게시물에서 오류를 지적 후에 추가 된)
rake db:migrate VERSION=20100905201547
위해 ONLY ONE 특정 마이그레이션 (ORDER OF OUT) 사용을 롤백합니다 :
rake db:migrate:down VERSION=20100905201547
나열 만 한 - 참고이 어떤 중보 마이그레이션을 롤백하지 것이다. 마이그레이션을 그리고 이전에 롤백되지 않은 어떤 다른 사람을 건너 뛰고, 해당 하나를 다시 실행합니다 : 그건 당신이 의도하지 않은 경우, 당신은 안전하게 레이크 DB를 실행할 수 있습니다.
마이그레이션 : 혹시 순서가 하나의 마이그레이션을 마이그레이션 할 경우에, 또한 역 dB가 최대 :
rake db:migrate:up VERSION=20100905201547
-
==============================
2.
rake db:migrate:down VERSION=20100905201547
특정 파일을 롤백합니다.
모든 마이그레이션의 버전을 확인하려면,이 명령을 사용할 수 있습니다 :
rake db:migrate:status
또는, 이전의 파일 이름 단순히 접두사는 롤백해야하는 버전입니다.
마이그레이션에 루비 온 레일스 가이드 항목을 참조하십시오.
-
==============================
3.당신이 할 수있는 마지막 마이그레이션을 롤백하려면
당신이 할 수있는 마지막 마이그레이션을 롤백하려면
rake db:rollback
당신은 당신이해야 버전과 특정 마이그레이션을 롤백하려면 :
rake db:migrate:down VERSION=YOUR_MIGRATION_VERSION
의 경우 예를 들어, 버전이 20141201122027 경우, 당신은 할 것입니다 :
rake db:migrate:down VERSION=20141201122027
특정 마이그레이션을 롤백합니다.
-
==============================
4.다른 옵션으로 롤백 : 당신은 레이크 DB를 사용하여 마이그레이션을 롤백 할 수 있습니다. 구문은 사용자의 요구 사항에 따라 달라집니다.
다른 옵션으로 롤백 : 당신은 레이크 DB를 사용하여 마이그레이션을 롤백 할 수 있습니다. 구문은 사용자의 요구 사항에 따라 달라집니다.
방금 마지막 마이그레이션을 롤백하려면 다음 중 하나를 사용할 수 있습니다
rake db:rollback
또는
rake db:rollback STEP=1
당신이 한 번에 마이그레이션 롤백 수를 원한다면, 당신은 단순히 인수를 전달할 :
rake db:rollback STEP=n
여기서 n은 롤백에 대한 마이그레이션의 수, 최근 마이그레이션에서 계산이다.
특정 마이그레이션 롤백하려면, 당신은 다음의 이전의 버전을 통과해야한다 :
rake db:migrate:down VERSION=xxxxx
여기서 xxxxx는 마이그레이션의 버전 번호입니다.
-
==============================
5.레이크 dB : 마이그레이션 : 다운 VERSION = your_migrations's_version_number_here
레이크 dB : 마이그레이션 : 다운 VERSION = your_migrations's_version_number_here
버전은 이전의 파일 이름에 숫자 접두어
버전을 찾는 방법 :
마이그레이션 파일은 rails_root / DB / 마이그레이션 디렉토리에 저장됩니다. 당신이 롤백 원하는 접두사 번호를 복사까지되는 해당 파일을 찾습니다.
예를 들면
파일 이름 : 20140208031131_create_roles.rb 다음 버전은 20140208031131입니다
-
==============================
6.마지막으로 마이그레이션을 롤백 :
마지막으로 마이그레이션을 롤백 :
# rails < 5.0 rake db:rollback # rails >= 5.0 rake db:rollback # or rails db:rollback
마이그레이션의 마지막 n 번호를 롤백
# rails < 5.0 rake db:rollback STEP=2 # rails >= 5.0 rake db:rollback STEP=2 # or rails db:rollback STEP=2
특정 마이그레이션을 롤백
# rails < 5.0 rake db:migrate:down VERSION=20100905201547 # rails >= 5.0 rake db:migrate:down VERSION=20100905201547 # or rails db:migrate:down VERSION=20100905201547
-
==============================
7.당신이 할 수있는 마지막 마이그레이션을 롤백하려면
당신이 할 수있는 마지막 마이그레이션을 롤백하려면
rake db:rollback
당신은 당신이해야 버전과 특정 마이그레이션을 롤백하려면 :
rake db:migrate:down VERSION=YOUR_MIGRATION_VERSION
롤백에 원하는 마이그레이션 파일이 호출 된 경우 dB / 마이그레이션 / 20141201122027_create_some_table.rb, 그 이전의 버전은 그 이전이 생성 될 때의 타임 스탬프 및 마이그레이션이 될 것이라고 롤 위로 명령은 20141201122027입니다 :
rake db:migrate:down VERSION=20141201122027
-
==============================
8.이 가역 마이그레이션 및 실행 된 마지막 경우, 갈퀴 DB를 실행 롤백. 그리고 당신은 항상 버전을 사용할 수 있습니다. 예컨대
이 가역 마이그레이션 및 실행 된 마지막 경우, 갈퀴 DB를 실행 롤백. 그리고 당신은 항상 버전을 사용할 수 있습니다. 예컨대
롤백 명령을 할 수 있도록 마이그레이션 파일은 20140716084539_create_customer_stats.rb입니다 레이크 dB : 마이그레이션 : VERSION 아래로 = 20140716084539
-
==============================
9.특정 버전 (예 : 20181002222222), 사용까지 모든 마이그레이션을 롤백하려면 :
특정 버전 (예 : 20181002222222), 사용까지 모든 마이그레이션을 롤백하려면 :
rake db:migrate VERSION=20181002222222
(주이 사용하는 DB에 있음 : 마이그레이션을 -하지 DB를 : 마이그레이션 : 아래이 질문에 대한 다른 답변에서와 같이.)
지정된 마이그레이션 버전이 현재 버전보다 오래된 가정이 최대 모든 마이그레이션을 롤백하지만, 지정된 버전을 포함하지 않음.
예를 들어, 레이크 DB 경우 : 마이그레이션 : 상태 초기 표시 :
(... some older migrations ...) up 20181001002039 Some migration description up 20181002222222 Some migration description up 20181003171932 Some migration description up 20181004211151 Some migration description up 20181005151403 Some migration description
달리는:
rake db:migrate VERSION=20181002222222
발생합니다 :
(... some older migrations ...) up 20181001002039 Some migration description up 20181002222222 Some migration description down 20181003171932 Some migration description down 20181004211151 Some migration description down 20181005151403 Some migration description
참조 : https://makandracards.com/makandra/845-migrate-or-revert-only-some-migrations
-
==============================
10.레일 가이드에서
레일 가이드에서
당신은 되돌릴 방법을 사용하여 롤백 마이그레이션에 액티브 레코드의 기능을 사용할 수 있습니다 :
require_relative '20100905201547_create_blocks' class FixupCreateBlock < ActiveRecord::Migration def change revert CreateBlock create_table(:apples) do |t| t.string :variety end end end
되돌리기 방법은 리버스 명령들의 블록을 받아 들인다. 이것은 이전 마이그레이션의 선택된 부분을 되돌릴 유용 할 수 있습니다. 예를 들어, CreateBlock가 노력하고 나중에는 우편 번호를 확인, 점검 제한 조건 대신에, 액티브 레코드 유효성 검사를 사용하는 것이 최선이 될 것입니다 결정되어 있다고 가정 해 봅시다.
class DontUseConstraintForZipcodeValidationMigration < ActiveRecord::Migration def change revert do # copy-pasted code from CreateBlock reversible do |dir| dir.up do # add a CHECK constraint execute <<-SQL ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 5); SQL end dir.down do execute <<-SQL ALTER TABLE distributors DROP CONSTRAINT zipchk SQL end end # The rest of the migration was ok end end end
같은 마이그레이션은 되돌리기를 사용하지 않고 쓸 수 있었다 그러나 이것은 몇 단계를 포함 것 : CREATE_TABLE과 가역적의 순서를 반대로, DROP_TABLE에 의해 CREATE_TABLE 교체, 그리고 마지막으로 아래에 의해 대체 그 반대의 경우도 마찬가지입니다. 이것은 모든 되돌리기에 의해 처리된다.
-
==============================
11.마이그레이션 명령을 사용하여 데이터베이스의 상태를 변경
마이그레이션 명령을 사용하여 데이터베이스의 상태를 변경
$ bundle exec rake db:migrate
우리가 사용하는 단일 마이그레이션 단계를 취소 할 수 있습니다
$ bundle exec rake db:rollback
처음으로 모든 방법을 다시 이동하기 위해 사용할 수 있습니다
$ bundle exec rake db:migrate VERSION=0
당신이 추측 할 수 있듯이, 버전 번호가 순차적으로 마이그레이션을 목록에서 오는 그 버전 번호 0을 마이그레이션에 대한 다른 번호로 대체
-
==============================
12.잘 레일 5 그것은 아주 쉽게 레이크 dB : 마이그레이션 : 상태 또는 마이그레이션 : DB 레일 상태를
잘 레일 5 그것은 아주 쉽게 레이크 dB : 마이그레이션 : 상태 또는 마이그레이션 : DB 레일 상태를
그것은 같은 방법으로 모두 처리하도록 수정되었습니다 그런 다음 당신이 롤 뒷면에 원하는 버전 선택 다음 실행 레이크 dB : 마이그레이션 VERSION = 2013424230423
확인 버전은 모두 대문자입니다
당신이 중간에 어떤 마이그레이션의 단계 또는 붙어에 문제가있는 경우 단순히 이미 마이그레이션 된 라인 밖으로 마이그레이션 파일과 코멘트로 이동합니다.
희망이 도움이
-
==============================
13.당신이 롤백하려는 및 마이그레이션하는 경우 당신은 실행할 수 있습니다 :
당신이 롤백하려는 및 마이그레이션하는 경우 당신은 실행할 수 있습니다 :
rake db:migrate:redo
그와 동일합니다 :
rake db:rollback rake db:migrate
from https://stackoverflow.com/questions/3647685/how-to-rollback-a-specific-migration by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 어떻게 Ajax 요청과 레일의 플래시를 처리하나요? (0) | 2020.02.09 |
---|---|
[RUBY-ON-RAILS] 모델이 이미 존재하는 경우 어떻게`레일을 생성 scaffold`를 실행하려면? (0) | 2020.02.09 |
[RUBY-ON-RAILS] 레일의 기본 키를 변경하면 문자열이어야합니다 (0) | 2020.02.09 |
[RUBY-ON-RAILS] 중첩 된 PARAMS 해시에 무기 호에 메소드를 호출 피하기 위해 깨끗한 방법이 있나요? [복제] (0) | 2020.02.09 |
[RUBY-ON-RAILS] 삭제 링크 레일 3보기 대신에 "삭제"의 "가져 오기"전송 (0) | 2020.02.08 |