나는 내 레일 앱에서 한 번에 한 번의 마이그레이션 만 실행하려고합니다. 어떻게해야합니까? 이전이나 이후의 마이그레이션을 실행하고 싶지 않습니다. 감사.레이크 한 번만 수행
답변
rake db:migrate:redo VERSION=xxxxxxx
이지만, 이는 down
단계와 up
단계를 실행합니다. 일시적으로 중단 단계를 설명하는 것과 함께이 작업을 수행 할 수 있습니다.
흠, http://blog.stonean.com/2007/12/18/rake-dbmigrateredo/, :: redo는 VERSION 인수를 사용하지 않는 것 같습니다. –
그것은 작동한다, 나는 그것을 시험했다. 이 기사는 TWOUSAND AND SEVEN입니다. 그 시간 동안 레일은 많이 바뀝니다. –
그러면 왜 Stackoverflow가 오래된 정보를 표시해야합니까? 'rake -T'를 실행하면'db : migrate : redo'라는 작업이 없습니다. –
rake db:migrate VERSION=20098252345
시도해보십시오.
나는 당신이 지정한 하나의 마이그레이션을 실행할 것이라고 생각합니다. –
가 닫히지 만 특정 마이 그 레이션 전에 모든 마이 그 레이션도 실행됩니다. – Anon
이전 버전을 고려하지 않고 마이그레이션을 하나만 실행해야한다고 생각하지 않습니다. 마이그레이션은 특정 시점의 코드와 관련하여 데이터베이스 구조를 표현하므로 필요하기 전에 마이그레이션을 수행해야합니다. _one_ 이주 만 실행하려는 경우 적절한 위/아래 작업을 작성하지 않아 마이그레이션 기능을 유지하지 못할 가능성이 있습니다 ... 마이그레이션을 작성하는 것이 좋지 않은 습관입니다. –
콘솔을 통해 마이그레이션 클래스를 실행하는 방법이 있어야합니다. 마이그레이션 코드를 인식 할 수없는 것 같습니다.
그러나 의견에서 알 수 있듯이 마이그레이션을 순서대로 실행하는 것이 좋습니다. 사용 :
rake db:migrate VERSION=##########
스크립트/콘솔로 마이그레이션 할 때 코드를 복사하여 붙여 넣으시겠습니까?
rake db:migrate:up VERSION=1234567890
마찬가지로 rake db:migrate:down
은 특정 마이그레이션을 수행합니다. rake -T
으로 사용 가능한 레이크 작업 목록을 얻을 수 있습니다.
여기에 언급 된 '버전'은 각 마이그레이션 파일의 시작 부분에있는 정수 값입니다 (이는 생성 당시의 타임 스탬프 임). 예 : 'VERSION = 20150720023630'. –
버전은 rake db : migrate : status – jpgeek
다른 모든 마이그레이션과 독립적으로 다시 실행해야하는 단일 마이그레이션을 실행해야했습니다. 콘솔을 발사하고 다음을 수행
>> require 'db/migrate/your_migrations.rb'
=> ["YourMigrations"]
>> YourMigrations.up
=> etc... as the migration runs
>> YourMigration.down
더 유용이 내가 개발이 매우 용이하게하는 유틸리티 메소드가 등 레이크 작업
에 투입 할 수있다. 너무 많은 마이그레이션을 피하는 데 도움이된다는 것을 알게되었습니다. 일반적으로 마이그레이션이 배포 될 때까지 마이그레이션을 수정합니다.
http://fullware.net/index.php/2011/05/26/easily-load-rails-migrations-for-console-execution/
rake db:migrate:up VERSION=version_no
이
rake db:migrate:down VERSION=version_no
가 korch 이상으로 답변을 확장 특정 마이그레이션 스크립트를
을 삭제합니다 (추가) 특정 마이그레이션 스크립트 마이그레이션 할 것인가, require
는 않았다 나를 위해 일하지 않지만, load
않았다. 마이그레이션 파일에 대해 구체적으로 :
class ChangeMinQuantityToRaces < ActiveRecord::Migration
def change
change_column :races, :min_quantity, :integer, :default => 0
end
end
을
> load 'db/migrate/30130925110821_change_min_quantity_to_races.rb'
> ChangeMinQuantityToRaces.new.change
이 나를 위해 일한 입력 콘솔에서.
> Race.new.min_quantity # => 0
이 루비 1.9.3p484 (2013년 11월 22일 수요일 수정 43,786) x86_64에 리눅스] 및 레일 3.2.13 위해이었다.
훌륭하게, 이것은 완벽하게 작동합니다! – Loed
rake db:migrate:redo version='xxxx'
xxxx는 따옴표로, xxxx는 마이그레이션의 타임 스탬프 (또는 마이그레이션 ID)를 지정해야합니다.
당신은 나는이 같은 문제에 달려 있기 때문에이 내 2 ¢를 추가
rake db:migrate:status
을 사용하여 수행 한 이전 마이그레이션에 대한 타임 스탬프 (마이그레이션 ID)를 확인 할 수 있습니다
당신이 만약 절대적으로 새로 만들지 않고 또 다시 마이그레이션을 실행하려면, 다음을 수행 할 수 있습니다
rails dbconsole -p devdb=# delete from public.schema_migrations where version = '20150105181157';
을 그리고 레일 것 " 잊어 버려서 20150105181157의 마이그레이션을 실행했다는 사실을 잊어 버렸습니다. 이제 db : migrate를 실행하면 다시 실행할 것입니다.
이것은 거의 항상 나쁜 생각입니다. 개발 브랜치가 있고 아직 마이그레이션을 완료하지 않았으며 개발 중 일부 항목을 추가하려고하는 경우가 있습니다. 그러나 마이그레이션을 양방향으로 수행하여 반복적으로 롤백하고 다시 시도하는 것이 좋습니다.
마이 그 레이션을 상당량 변경하면이 기술을 사용하게되고, 중간에 마이그레이션하고 싶지는 않습니다. (특히 이전 데이터를 가져올 때 특히 그렇습니다. 내가 다시 다시 가져오고 싶지 않은 오랜 시간).
이 100 % hackish 내가 확실히 생산에이 일을 권하고 싶지 않다, 그러나 그것은 트릭을 할 것입니다 :
-
임시 장소에 그 디렉토리에서 다시 실행하려는
- 이동 마이그레이션 이
- 복사/새로 생성 된 마이그레이션 파일
- 실행 새로운 마이그레이션
- 에 원래의 마이그레이션 코드를 붙여 새로 GE 삭제 같은 이름을 가진 다른 마이그레이션을 생성 nerated 마이그레이션 파일은
- 편집 스키마 마이그레이션 이전 마이그레이션 파일
- 1. jQuery에서 한 번만 수행
- 2. jQuery - 한 번만 수행
- 3. Jquery, 방법은 한 번만 inital 페이지로드에 한 번만 사용 하시겠습니까?
- 4. div를 한 번만 표시
- 5. 쿠키 - 한 번만 투표
- 6. 타이머가 한 번만 작동합니다.
- 7. 한 번만 메시지 보이기
- 8. 하루에 한 번만 삽입
- 9. 활동은 한 번만 호출해야합니다.
- 10. 한 번만 배경을 칠하십시오
- 11. 데이터베이스에 한 번만 삽입하십시오.
- 12. set_table_name은 한 번만 작동합니까?
- 13. 플레이어가 한 번만 멈춤
- 14. jQuery를 - Fadein 한 번만
- 15. 한 번만 UIAlert?
- 16. 앱이 하루에 한 번만
- 17. 클래스를 한 번만 초기화하십시오.
- 18. link_to_remote를 한 번만 클릭하십시오
- 19. JOIN; 한 번만 기록하십시오!
- 20. Facebox는 한 번만 작동합니다.
- 21. 변수는 한 번만 사용됩니다.
- 22. UpdatePanel은 갱신 한 번만
- 23. XML 스키마 한 번만
- 24. viewWill 한 번만 호출됩니다.
- 25. 스레드가 한 번만 실행됩니다
- 26. 타이머를 한 번만 사용하십시오.
- 27. presentModalViewControlover는 한 번만 작동합니다.
- 28. 한 번만 전체 사용
- 29. matplotlib은 한 번만 플롯합니다
- 30. 한 번만 jQuery 애니메이션을 실행 한 다음 다른 작업을 수행 한 다음 애니메이션을 뒤집습니다.
복원 가장 최근의 값