rails의migrate 파일과 친하게 지내다

7946 단어 RubyRails

입문


현재 어느 프로그래밍 학교에서 Rails를 공부하고 있는데, 처음 4개월 정도 공부하는 초보자입니다.
개인 개발, 팀 개발은 항상 같은 곳에서 루비의 레일에서 벗어나기 때문에 표지판을 남겨야 한다
첫 투고라서 오타가 있으면 죄송합니다.
개발 환경, 기타
IDE : Cloud9
Ruby : 2.6.3
Ruby on Rails : 5.2.4.4
rails new ~에서 일부 응용 프로그램을 만들었습니다
테이블이 생성됨
sample_앱이라는 이름으로 만든 간이 사진 투고 프로그램으로migrate 근처의 상황을 정리하고 싶어요.

열 추가, 삭제 및 수정


lists라는 표를 사용합니다

열 추가


"hoge"라는 열을string 형식으로 여기에 추가한다고 가정하십시오.
단말
 rails g migration AddhogeToLists hoge:string
db/migrate/날짜_addhoge_to_lists.rb라는 파일 만들기

add_column: 테이블 이름,: 열 이름,: 데이터 형식
이렇게 써드릴게요.
단말
 rails db:migrate
하면, 만약, 만약...

믿음직하다
추가 완료 (위 두 줄은 신경 쓰지 마세요)

열 삭제


이제 방금 추가한 내용을 삭제합니다.
단말
 rails g migration RemovehogeToLists hoge:string

단말
 rails db:migrate
schema 확인!

사라졌네(ˊ̱˂˃ˋ̱ )

열 수정



위의 두 번째 줄의 바디열의 데이터 형식을string에서text로 바꾸고 싶습니다.
단말
 rails g migration change_data_body_to_lists
열 추가 또는 삭제와 동일
db/migrate/날짜_addhoge_to_lists.rb라는 파일을 만들 것입니다

단말
 rails db:migrate
schema 확인!!

너 많이 변했어.

총결산


열 추가 → rails g migration Add 열 이름 To 다중 테이블 이름 (없어도 ok) 열 이름: 데이터 형식
rails db:migrate
열 삭제 - rails g migration Remove 열 이름 To 다중 테이블 이름 (없어도 ok) 열 이름: 데이터 형식
rails db:migrate
열 변경 - rails g migration change_data_열 이름 to 다중 테이블 이름
rails db:migrate

migrate 파일 삭제


원칙적으로migrate 파일을 삭제하지 않습니다
테이블 내용의 변경을 삭제할 때, 위에서 말한 바와 같이migrate 파일을 만들면 반복적으로 반영한다
(migrate 파일의 양만 거대해짐)
하지만 개인 개발 때와git도 push 전에 자신이 만든migrate 파일을 되돌려 주고 싶을 때가 있을 텐데...
이번에는 상술한 3개의migrate 파일이 필요하지 않기 때문에 없는 일을 하고 싶습니다

현재migrate 파일은 어떤 느낌입니까?


단말
 rails db:migrate:status

다음 세 번째 줄은 아까 추가된 파일이죠.
Status가 up이라서 반응이 좋았어요.

롤백 등장


만약 파일이 up 상태라면 schema에 반영되기 때문에 파일을 삭제하는 데 오류가 발생하지 않지만 데이터베이스 문제로 복잡해질 수 있습니다
나는 아래에서 두 번째 줄을 삭제하려고 했다

migrate 폴더에서 사라졌지만,migrate status에 남아 있습니다
팀 개발 상황에서 이러다 데이터베이스에 문제가 생겨 무엇보다도 구역질이 나므로 파일을 직접 삭제하지 마라
schema

hoge열도 부활하지 않았으니 멈춰라
상태를 down으로 설정하면 삭제도 문제없습니다
(down 상태일 때 파일 내용이 어디에 반영되지 않는 상태)

그럼 저희가 돌려놓을게요.


단말
 rails db:rollback
현재, 지난migrate 파일은down으로 되돌아옵니다.
그런데 이번에는 여러 파일을 말아오고 싶어서 여러 줄을 지정했어요.
단말
 rails db:rollback STEPn
n에 되돌릴 줄 수를 넣습니다.
이번에는 3이죠.
*권토중래는 대개 모두 down이지만 마지막에 railsdb:migrate를 하면 모두 반영되기 때문에 문제없다
해볼게요.

...잘못된 거지?ρ༎ຶོ`)
"migration에 change_column이 있습니다. 롤백할 수 없습니다.
돌아가야 한다
1. #change 방법의 장소를 #up 또는 #down으로 설정
2. #reversible 메서드 사용"
그래서 change를 up으로 바꿔서 실행합니다.

롤백 한번 해볼게요.

완성
상태 확인!

schema 확인!

모든 것이 원래로 돌아왔다
파일을 삭제하고 상태를 다시 확인합니다!!

느낌이 좋네요(^ω^)ˊ̱˂˃ˋ̱ )
엉망진창인 마이그레이션 파일을 복원하세요.
단말
 rails db:migrate:reset
그 뒤에
단말
 rails db:migrate
데이터베이스가 새것이기 때문에 처음부터 다시 투고한다
(seed 파일에 데이터를 넣으면railsdb:seed를 하세요)

총결산


railsdb:rollback 볼륨migrate 파일 사용하기
여러 줄이면 railsdb:rollback STEP=n
def change면 말아주지 않으니까 up이나 down으로 바꿔드릴게요.
답안지의migrate 파일,railsdb:migrate
migrate 파일이 엉망진창이 되면, 데이터 투고 내용을 잠시 리셋하고 싶습니다. (투고물은 "테스트"같은 것입니다.) railsdb:migrate:reset

끝날 때


migrate 주변에서 자꾸 길을 잃어버려서 요약을 해봤어요.
열명을 잘못 쳐서 그렇게 마이그레이션을 했기 때문에 개선하고 싶어요.
기념할 만한 첫 문장을 끝까지 보셔서 감사합니다
잘못된 점, 이상한 점이 있으면 알려주세요.

참고 자료


https://qiita.com/azusanakano/items/a2847e4e582b9a627e3a
https://qiita.com/yana_dev/items/c96594bbea3329ef0fec

좋은 웹페이지 즐겨찾기