2009-08-25 9 views
73

나는 내 레일 앱에서 한 번에 한 번의 마이그레이션 만 실행하려고합니다. 어떻게해야합니까? 이전이나 이후의 마이그레이션을 실행하고 싶지 않습니다. 감사.레이크 한 번만 수행

+0

복원 가장 최근의 값

  • 을 제거하는이 편리한 레일 기능이 될 것입니다 : dB'에'STEP = n' 인수를 추가 마이그레이션 '(여기서'n'은'db : rollback'과 마찬가지로) 실행할 레이크 수입니다. - rake db : migrate STEP = 1' 또는'rake db : migrate STEP = 2'를 수행 할 수 있습니다. – user664833

  • 답변

    141

    rake db:migrate:redo VERSION=xxxxxxx이지만, 이는 down 단계와 up 단계를 실행합니다. 일시적으로 중단 단계를 설명하는 것과 함께이 작업을 수행 할 수 있습니다.

    +0

    흠, http://blog.stonean.com/2007/12/18/rake-dbmigrateredo/, :: redo는 VERSION 인수를 사용하지 않는 것 같습니다. –

    +0

    그것은 작동한다, 나는 그것을 시험했다. 이 기사는 TWOUSAND AND SEVEN입니다. 그 시간 동안 레일은 많이 바뀝니다. –

    +0

    그러면 왜 Stackoverflow가 오래된 정보를 표시해야합니까? 'rake -T'를 실행하면'db : migrate : redo'라는 작업이 없습니다. –

    7
    rake db:migrate VERSION=20098252345 
    

    시도해보십시오.

    +6

    나는 당신이 지정한 하나의 마이그레이션을 실행할 것이라고 생각합니다. –

    +1

    가 닫히지 만 특정 마이 그 레이션 전에 모든 마이 그 레이션도 실행됩니다. – Anon

    +4

    이전 버전을 고려하지 않고 마이그레이션을 하나만 실행해야한다고 생각하지 않습니다. 마이그레이션은 특정 시점의 코드와 관련하여 데이터베이스 구조를 표현하므로 필요하기 전에 마이그레이션을 수행해야합니다. _one_ 이주 만 실행하려는 경우 적절한 위/아래 작업을 작성하지 않아 마이그레이션 기능을 유지하지 못할 가능성이 있습니다 ... 마이그레이션을 작성하는 것이 좋지 않은 습관입니다. –

    0

    콘솔을 통해 마이그레이션 클래스를 실행하는 방법이 있어야합니다. 마이그레이션 코드를 인식 할 수없는 것 같습니다.

    그러나 의견에서 알 수 있듯이 마이그레이션을 순서대로 실행하는 것이 좋습니다. 사용 :

    rake db:migrate VERSION=########## 
    

    스크립트/콘솔로 마이그레이션 할 때 코드를 복사하여 붙여 넣으시겠습니까?

    57
    rake db:migrate:up VERSION=1234567890 
    

    마찬가지로 rake db:migrate:down은 특정 마이그레이션을 수행합니다. rake -T으로 사용 가능한 레이크 작업 목록을 얻을 수 있습니다.

    +3

    여기에 언급 된 '버전'은 각 마이그레이션 파일의 시작 부분에있는 정수 값입니다 (이는 생성 당시의 타임 스탬프 임). 예 : 'VERSION = 20150720023630'. –

    +1

    버전은 rake db : migrate : status – jpgeek

    23

    다른 모든 마이그레이션과 독립적으로 다시 실행해야하는 단일 마이그레이션을 실행해야했습니다. 콘솔을 발사하고 다음을 수행

    >> require 'db/migrate/your_migrations.rb' 
    => ["YourMigrations"] 
    >> YourMigrations.up 
    => etc... as the migration runs 
    >> YourMigration.down 
    

    더 유용이 내가 개발이 매우 용이하게하는 유틸리티 메소드가 등 레이크 작업

    +6

    과 같이 멋지게 표시됩니다. 또한 코드를 마이그레이션에서 콘솔로 복사하여 붙여 넣기하여 클래스를 정의 할 수도 있습니다 (예 : Dev에서 실수로 실수 한 경우 필요한 경우 수동 조작이 가능함). 'change'를 사용하여 가역적 이전을 정의한 경우 대신'YourMigrations.migrate (: up)'을 실행하십시오. – trisweb

    +0

    # {Rails.root}/db/migrate/your_migrations.rb " – s2t2

    6

    rake db:migrate:up VERSION=version_no

    rake db:migrate:down VERSION=version_no

    가 korch 이상으로 답변을 확장 특정 마이그레이션 스크립트를

    3

    을 삭제합니다 (추가) 특정 마이그레이션 스크립트 마이그레이션 할 것인가, 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 위해이었다.

    +0

    훌륭하게, 이것은 완벽하게 작동합니다! – Loed

    3
    rake db:migrate:redo version='xxxx' 
    

    xxxx는 따옴표로, xxxx는 마이그레이션의 타임 스탬프 (또는 마이그레이션 ID)를 지정해야합니다.

    당신은 나는이 같은 문제에 달려 있기 때문에이 내 2 ¢를 추가

    rake db:migrate:status  
    
    1

    을 사용하여 수행 한 이전 마이그레이션에 대한 타임 스탬프 (마이그레이션 ID)를 확인 할 수 있습니다

    당신이 만약 절대적으로 새로 만들지 않고 또 다시 마이그레이션을 실행하려면, 다음을 수행 할 수 있습니다

    rails dbconsole -p devdb=# delete from public.schema_migrations where version = '20150105181157';

    을 그리고 레일 것 " 잊어 버려서 20150105181157의 마이그레이션을 실행했다는 사실을 잊어 버렸습니다. 이제 db : migrate를 실행하면 다시 실행할 것입니다.

    이것은 거의 항상 나쁜 생각입니다. 개발 브랜치가 있고 아직 마이그레이션을 완료하지 않았으며 개발 중 일부 항목을 추가하려고하는 경우가 있습니다. 그러나 마이그레이션을 양방향으로 수행하여 반복적으로 롤백하고 다시 시도하는 것이 좋습니다.

    0

    마이 그 레이션을 상당량 변경하면이 기술을 사용하게되고, 중간에 마이그레이션하고 싶지는 않습니다. (특히 이전 데이터를 가져올 때 특히 그렇습니다. 내가 다시 다시 가져오고 싶지 않은 오랜 시간).

    이 100 % hackish 내가 확실히 생산에이 일을 권하고 싶지 않다, 그러나 그것은 트릭을 할 것입니다 :

      임시 장소에 그 디렉토리에서 다시 실행하려는
    1. 이동 마이그레이션
    2. 복사/새로 생성 된 마이그레이션 파일
    3. 실행 새로운 마이그레이션
    4. 에 원래의 마이그레이션 코드를 붙여 새로 GE 삭제 같은 이름을 가진 다른 마이그레이션을 생성 nerated 마이그레이션 파일은
    5. 편집 스키마 마이그레이션 이전 마이그레이션 파일