[Rails] 잘못된 마이그레이션 파일을 삭제할 수 없음 →railsdb:migrate:reset을 통해 해결

8699 단어 Rails
이전 글
[Rails] 표에 열을 추가할 때 낙타 껍질 이외의 곳에 기입하면 어떨까요?
그리고 자신이 느낀 의문을 직접 지령으로 실행하면 (여러 개 만들었다) 필요 없는 파일은 삭제할 수 없다(땀)
이번에는 많은 것을 알아차렸기 때문에 반성하는 마음으로 기사를 쓰고 싶어요.

할 수 없는 일과 잘못된 내용.


터미널에서 필요하지 않은 파일을 삭제하고 싶지만 삭제하기 전에down 상태로 들어갈 수 없습니다 (롤백 불가)
#ターミナルに表示されるエラー
foo@fogefogenoMacBook-Air bar % bundle exec rake db:migrate:down VERSION=20200829125501_Nickname2.rb
rake aborted!
Invalid format of target version: `VERSION=20200829125501_Nickname2.rb`
/Users/fogefoge/.rbenv/versions/2.6.5/bin/bundle:23:in `load'
/Users/fogefoge/.rbenv/versions/2.6.5/bin/bundle:23:in `<main>'
Tasks: TOP => db:migrate:down
(See full trace by running task with --trace)

해결책


나는 먼저 해결할 방법을 쓸 것이다.
나는 지금 프로그래밍 학교에 다니며 지도 교수의 도움을 받았다.
(정말 고맙습니다.)
1. Rails 파일에서 자신이 하고 싶은 파일을 만드는 경우.
① 왼쪽에서 삭제할 파일을 모두 우클릭으로 삭제
② 이번에 보존하고자 하는'20200829063700 devise creat users.rb'파일에 오른쪽의 9번째 줄에 있는nickname(이번에는 열로 표에 추가하고자 함)을 추가했다.

2. 터미널에서 다음 명령을 실행합니다.
'railsdb:migrate:reset'은 삭제한 후 제작하고 스스로 조정하는 지령을 가리킨다.
#ターミナル上で、以下コマンドを実行
foo@fogefogenoMacBook-Air bar % rails db:migrate:reset
#実行後、表示された内容
Dropped database 'pictweet_development'
Dropped database 'pictweet_test'
Created database 'pictweet_development'
Created database 'pictweet_test'
== 20200825113455 CreateTweets: migrating =====================================
-- create_table(:tweets)
   -> 0.0130s
== 20200825113455 CreateTweets: migrated (0.0131s) ============================

== 20200829063700 DeviseCreateUsers: migrating ================================
-- create_table(:users)
   -> 0.0412s
-- add_index(:users, :email, {:unique=>true})
   -> 0.0603s
-- add_index(:users, :reset_password_token, {:unique=>true})
   -> 0.0429s
== 20200829063700 DeviseCreateUsers: migrated (0.1469s) =======================


완성했어!!

말하자면 내가 한 일


여기서부터 디버깅에 포함해서'내가 했다'고 생각하는 요점을 적으세요.
했던 것 중에 하나예요.
한 명씩 테스트(거꾸로 돌리지 마)하지 말고 필요 없는 여러 개의 이전 파일을 단숨에 만들었다.
하는 일의 두 번째
실험→정상(교학계획대로)→실험→실험의 순서로 진행한다.
디버깅 과정에서 롤백을 사용하는 방법은 앞에서 되돌아오는 것이 생각났다.
도중에 정상적으로 끼었기 때문에 롤백으로 되돌아오는 것이 일시적으로 전부 돌려주고 정확하게 다시 만드는 일이 된다.
했던 일 셋.
아무 것도 고려하지 않고 실험에서 필요하지 않은 이동 파일을 우클릭하면 단숨에 삭제한다.
갑자기 이런 느낌 지워도 돼요?그러고 보니 롤백이라는 단어가 있는데 그걸 안 했어요. 괜찮아요?이런 의문을 조사해봤습니다.
● 마이그레이션 파일 삭제를 마우스 오른쪽 버튼으로 클릭하면 파일은 삭제되지만 터미널은 사라지지 않습니다(Rails에 남음)
● 삭제된 파일이 보이지 않기 때문에 앞으로 같은 파일 이름 등으로 작업할 때 오류가 발생할 수 있음
나는 이 일을 알고 처리하기 시작했다.
하는 일의 네 가지
엉겁결에 후진하여 수렁에 빠지다.
특히 "아, 서버가 켜져서 안 되나요?"그러나 제어 C(서버의 단축키 낮추기)가 작동하지 않아 터미널을 열 수 없습니다.×닫혔어.지령 이력이 사라졌다.

생각 없이 후진했다


여기서부터 상술한'했던 일'을 알아차리고 엉뚱하게 후진한 일을 적어야 한다.
목적 없이 디버깅 1
열쇠로'NO FILE'삭제 방법을 찾아봤다.
참고 자료
[Rails] 마이그레이션 파일 삭제
Rubbyon Rails "NO FILE의 migration을 제거하는 방법"
👉touth,migrate,down을 하고 싶은데,down이 잘 안 돼요.
👉키보드에 적힌 것처럼, touth에서는 파일 이름을 삭제하는 것이 아니라 'hoge' 이름으로 바꿉니까?
맹목적 디버깅 2
파일 이름을 'hoge' 가 아닌 삭제된 이름으로 바꾸어 보십시오
👉진전이 순조롭지 못하다
맹목적 디버깅의 3
그럼 반 이름이 일치하지 않네요.
👉진전이 순조롭지 못하다
클래스 이름과 파일 이름이 다르기 때문에 이 오류는?눈에 띄는 보도
맹목적 디버깅 4
그렇다면 상기 1~3은 눈앞의 파일이 아니라 가장 오래된 파일에서 명령을 수행하는 것이다.
가장 오래된 서류가 아니라 앞의 서류부터 하겠습니다.
👉진전이 순조롭지 못하다
자기가 고쳐야 할 보도를 알아차리다
맹목적 디버깅 5
그러고 보니 서버가 켜져서 그런가?C를 제어하는 단축키가 안 좋아요.×닫기
👉잘 안 되고 이력서도 사라졌으니 실수다.
맹목적 디버깅의 6
안 그래도 잘 못 봤는데bin이라고 쓰여 있어요.
큰 틀의 절차가 있는 것 같습니다.
학급명과 파일명은 이런 오류가 없지만 위에 쓴 것도 좋지 않다.
그게 다야.

총결산


조사할수록 통증이 느껴져 이전 파일을 쉽게 추가하거나 삭제할 수 없다.
특히 팀 개발 때 파일만 삭제하면 다른 사람이 뭘 했는지 볼 수 없어 오류를 일으키는 원인을 배웠다.
또 이전 상황을 여러 차례 확인해 down을 시키려는 지령을 내렸기 때문에 이전에 대한 이해도 깊어졌다.
그리고 나서
● 무작정 후진하면 수렁에 빠진다는 통감
● 무분별한 디버깅을 위해 오류가 발생하지 않을 경우 다양한 가능성이 선택 항목으로 부상한다
나는 지금까지 성장하고 싶다.
저에게 솔루션과 따뜻한 말씀을 해주셔서 정말 감사합니다.
읽어주셔서 감사합니다.

좋은 웹페이지 즐겨찾기