Rails5.2 migration 파일을 만들고 다시 실행하는 방법

migration 파일을 작성하고 다시 시작하는 방법 (초학자 용)



migration 파일이란, 한마디로,
DB의 설계도입니다.
마이그레이션 파일에 필요한 열을 작성하고 실행하여 DB에 테이블을 작성할 수 있습니다. 애플리케이션과 데이터베이스 사이에는 구조적인 갭이 있어 임피던스 미스매치라고 합니다. 되어 있습니다.

모델을 만들면 migration 파일도 생성됩니다.



모델과 함께 만들 수 있습니다
$ rails g model モデル名 

열을 추가하고자 할 때 migration 파일도 생성됩니다.


$ rails g migration AddXxxxxToテーブル名

만들려는 열을 설명합니다.



change 메소드로 작성할 컬럼을 지정합니다.
이 예제는 name, book 및 image 열을 만듭니다.
쓴 후 저장하십시오.

db/migrate/201xxxxxx_creat_books.rb
class CreateTweets < ActiveRecord::Migration[5.2]
  def change
    create_table :books do |t|
      t.string   :name
      t.text     :book
      t.text     :image
      t.timestamps null:true
   end
  end
end

주요 사용 가능한 데이터 유형




금형
설명
용도


integer
숫자
사용자 ID

문자열
텍스트
암호, 사용자 이름

텍스트
문자
텍스트

부울
참인가 거짓인가
진위 플래그

datatime
날짜와 시간
작성일시

float
부동 소수점 수



실행 명령



현재 미실행 migration 파일을 실행합니다.
rake db:migrate

schema_migrations 파일에 버전이 기록됨



db/migrate/schema.rb
ActiveRecord::Schema.define(version: 2019_05_20_151430) do

  create_table "books", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
    t.string "name"
    t.text "text"
    t.text "image"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

end


schema_migrations 파일은 migration 파일의 실행 이력과 같은 것으로, 복수의 migration 파일에 있어서도 기록되고 있는 테이블입니다. 최신 스키마 정보를 ruby ​​스크립트로 표현합니다.

테이블 확인 (phpMyadmin (Mysql))



버전이 일치하는 migration 파일임을 알 수 있습니다.



db를 취소하고 싶을 때



어디까지 migrate되었는지 확인하기



migration 파일을 삭제하기 전에 확인해 둡시다.
rake db:version

의도하지 않은 컬럼이 생겼을 경우나, 뭔가 갱신의 변경의 때등.
$ rake db:rollback

migrate되지 않은 파일 확인


rake db:abort_if_pending_migrations

롤백하면 db에서 삭제되지만 파일로는 db/migrate에 남아 있습니다. 분명히 볼 수는 없지만이 명령을 사용하면 migrate되지 않은 파일을 식별 할 수 있습니다.
rake db:rollback는 최신 업데이트 기록 이전의 상태로 되돌리는 명령입니다. 의도하지 않은 열 등을 삭제하고 다시 쓰고 rake db:migrate 다시 실행하면 업데이트되지 않습니다. 새 열을 추가하려면 항상 migration 파일을 만듭니다.

ActiveRecord::Base.connection.tables



DB가 되돌아갔는지 터미널에서 확인
#コンソールで確認
$ rails c

#booksがない場合は、成功してます
$ ActiveRecord::Base.connection.tables
=> ["schema_migrations",]

$ exit

이전에 migrate한 내역 보기


$ rake db:migrate:status

결과
database: book_development

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20190520151430  Create books

up 로 표시되는 것은 DB에 반영되고 있는 파일이다.
down 로 표시되는 것은 , 반영되어 있지 않은 파일이다.

migration 파일을 복수로부터 선택해 rollback 하고 싶을 때



특정 파일을 지정할 수 있습니다.
rails db:migrate:down Version=migrationID

요약



migration 파일로 할 수 있는 일(초학자용)



migration 파일은 DB 설계도입니다.
이번은 change 메소드와 db를 사용할 때의 취급 방법이었습니다.

좋은 웹페이지 즐겨찾기