IT

Ruby on Rails : rake db : migrate 마이그레이션을 되돌리려면 어떻게해야합니까?

lottoking 2020. 9. 8. 08:14
반응형

Ruby on Rails : rake db : migrate 마이그레이션을 되돌리려면 어떻게해야합니까?


MODEL User를 설치 한 후 얻었습니다.

class DeviseCreateUsers < ActiveRecord::Migration
  def self.up
    create_table(:users) do |t|
      t.database_authenticatable :null => false
      t.recoverable
      t.rememberable
      t.trackable

      # t.encryptable
      # t.confirmable
      # t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both
      # t.token_authenticatable


      t.timestamps
    end

    add_index :users, :email,                :unique => true
    add_index :users, :reset_password_token, :unique => true
    # add_index :users, :confirmation_token,   :unique => true
    # add_index :users, :unlock_token,         :unique => true
    # add_index :users, :authentication_token, :unique => true
  end

  def self.down
    drop_table :users
  end
end

이제 rake db : migrate를 수행하면 사용자 테이블이 생성됩니다.

이 마이그레이션을 되돌릴 수있는 방법, 즉 rake를 사용하여 사용자 테이블을 다시 작성 수있는 방법은 무엇입니까?


다음 명령을 실행하십시오.

rake db:migrate:down VERSION=<version>

<version>되 돌리 마이그레이션 마이그레이션 파일의 버전 번호는 어디에 있습니까?

예. 파일 이름이 3846656238_create_users.rb 인 마이그레이션 되돌리려는 경우

rake db : 마이그레이션 : 다운 VERSION = 3846656238


다음 명령을 실행하십시오.

rake db:rollback

마이그레이션은 데 사용할 수있는 세 가지 옵션이 있다는 생각합니다 (중복도 있음).

  1. 가장 최근 마이그레이션롤 다운합니다 .

    rake db:migrate:down # Rails 2는 해당됩니다.

  2. 최근 마이그레이션 횟수 (n)를 롤 다운 합니다.

    rake db:rollback STEP=n

  3. 아래로 롤 이전, 특정 버전 :

    $ rake db:migrate:down VERSION=nnn # Rails 3 (버전 번호도 제공).

버전 번호는 커밋에 대한 SHA (Secure Hash Algorithm)를 의미하며 886af3194768917c78e와 같은 긴 16 진수입니다. 다음을 수행하여 확인할 수 있습니다. git log

rake -T db:레일 3.2에 포함되는 항목을 사용하여 설명과 함께 이러한 명령 (및 기타)을 볼 수 있습니다 .

rake db:migrate         # Migrate the database (options: VERSION=x, VERBOSE=false)
rake db:migrate:status  # Display status of migrations
rake db:rollback        # Rolls the schema back to the previous version (specify steps w/ STEP=n)

롤백을 수행하고 롤백 할 마지막 마이그레이션 수를 지정할 수 있습니다. 예 :

rake db:rollback STEP=3

마지막 마이그레이션 3 회


rake db:migrate:redo

마지막 마이그레이션을 실행 취소하고 다시 적용합니다.


새로운 프로그래머 (또는 다른 새로운 프로그래머)

rake db:rollback절반 정도 작동합니다. 나는 거기서 시작한다.

그렇지 않다면 rake db:migrate:down VERSION=3846656238

되돌리려는 마이그레이션 파일의 버전 번호에 VERSION을 연결하십시오.


레일 5의 경우 다음을 사용할 수 있습니다. rails command instead of rake

rails db:migrate:down VERSION=<version>

rails db : migrate : down VERSION = 20170330090327


터미널에서 다음 명령을 실행하십시오.

rake db:migrate:status

또는

bundle exec rake db:migrate:status

이전에 실행 한 모든 마이그레이션의 상태, 마이그레이션 ID, 마이그레이션 이름을 보여줍니다. 마이그레이션 ID (예 : 버전 번호)를 선택하고 다음 명령에서 version = 뒤에 해당 ID를 입력하고 Enter 키를 누릅니다.

bundle exec rake db:migrate:down VERSION=

마이그레이션을 롤백하는 방법

(1) 먼저 마이그레이션 ID 식별

rake db:migrate:status

  • ID 번호를 복사하십시오.

롤백 할 마이그레이션을 식별하십시오.

(2) 그런 다음 마이그레이션 롤백

rake db:migrate:down VERSION=20190802023239

  • 위의 관련 ID 번호를 붙여 넣으십시오. 물론 귀하의 경우 마이그레이션 ID가 다릅니다! 올바른 마이그레이션 ID를 사용하십시오.

....... 그리고 이제 당신은 경주를 시작합니다!

참고 URL : https://stackoverflow.com/questions/7694487/ruby-on-rails-how-can-i-revert-a-migration-with-rake-dbmigrate

반응형