레일에 보류중인 마이그레이션 표시


답변:


258

rake db:migrate:status(레일 3 ~ 5) 또는 rails db:migrate:status(레일 5)가이를 수행합니다. 이 커밋을 참조하십시오 .

up마이그레이션이 실행되었음을 의미합니다. down마이그레이션이 실행되지 않았 음을 의미합니다.


Don't know how to build task 'db:migrate:status'레일 을 타고있다 3.2.8
Peter Ehrlich

1
@ PeterEhrlich : 그것은 나타나지 rake -T않지만 다른 사람은 나타나지 않습니까?
jrdioko

2
번들 실행 db : migrate : status
Nadeem Yasin

2
이 명령의 출력을 어떻게 읽습니까? 행의 상태가 "작동 중지"인 경우 보류중인 마이그레이션 중입니까?
Dennis

12
up마이그레이션이 실행되었음을 의미합니다. down마이그레이션이 실행되지 않았 음을 의미합니다.
Josh

37

있습니다 rake db:abort_if_pending_migrations(적어도 Rails 2.3.3에는 언제 도입되었는지 확실하지 않습니다). 설명에 '대기중인 마이그레이션이있는 경우 오류가 발생합니다'라고 표시되어 있습니다. 이것은 다른 작업의 전제 조건으로 더 많이 사용되는 것으로 보이지만 귀하의 목적으로 사용할 수 있다고 생각합니다.

편집 : 다음은 '테스트'마이그레이션을 생성하고 실행하지 않은 후의 출력 예입니다.

rails_project theIV$ rake db:abort_if_pending_migrations
(in /Users/theIV/Sites/rails_project/)
You have 1 pending migrations:
  20090828200602 Test
Run "rake db:migrate" to update your database then try again.

레일 컨테이너 사이의 종속성을 조정하기 위해 이것을 추가하는 것을 좋아합니다
Vincent De Smet

여전히 Rails 4.1.16
Magne

레일 5.1.3에서도 작동
Wilson Silva

16

이 명령은 모든 마이그레이션을 상태 ( UP또는 DOWN) 와 함께 나열합니다.

레일 3 및 4

rake db:migrate:status

레일 5

rake db:migrate:status

# Or

rails db:migrate:status


6

이것은 레일 5.2에서 작동합니다

ActiveRecord::Base.connection.migration_context.needs_migration?

2

rake -h (도움말)를 시도하고 rake -n (= rake --dry-run)을 살펴보십시오. 따라서 rake -n db : migrate와 같은 것이 원하는 것을 얻을 수 있습니다.


2
작동하지 않습니다. ** db : migrate (first_time) 호출 ** 환경 (first_time) 호출 ** 실행 (dry run) 환경 ** 실행 (dry run) db : migrate
jrdioko

2

OP가 요구하는 것이 아닐 수도 있지만, 마이그레이션 작업에 의존하지 않고 마이그레이션 작업이 레이크 작업에 사용되도록 보류 중인지 신속하게 확인 해야하는 경우

rake db : migrate : status | grep down (Windows 인 경우 작동하지 않을 수 있음)

ActiveRecord :: Migration.check_pending! (구조해야하는 ActiveRecord :: PendingMigrationError 발생)

needs_migration을 사용할 수 있습니까? 방법 : https://apidock.com/rails/v4.0.2/ActiveRecord/Migrator/needs_migration%3F/class


2
ActiveRecord::Migrator.needs_migration?in Rails 5.1
niborg

1

마이그레이션 상태를 확인하기위한 다음 명령 :

rake db:migrate:status

또는

서버를 실행하면 보류중인 마이그레이션을 먼저 실행하라는 메시지가 표시됩니다.


1

마이그레이션이 얼마나 진행 중이거나 보류 중인지 보려면 아래 명령을 사용하여 볼 수 있습니다.

rails db:migrate:status

이 링크에 대한 추가 정보 : Rails Active Record Migration


1

마이그레이션 실행 여부를 결정하기 위해 bash one-liner가 필요한 경우 (예 : 보류중인 마이그레이션이있을 때 Heroku 릴리스 단계 명령으로 만 마이그레이션) 다음과 같이 작동합니다.

(rails db:migrate:status | grep "^\s*down") && rails db:migrate || echo "No pending migrations found."
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.