heroku run rails db:migrate가 할 수 없는 에러를 해결하는 방법

2231 단어 경 6migrateDBRails

【개요】



1. 결론

2. 왜 일어나는가

3. 어떻게 해결하는가?

4. 여기에서 배운 것

1. 결론



migrate 파일을 정리!

2. 왜 일어나는가



migrate 파일이 맞물리지 않았기 때문이었습니다. 실은, % rails db:rollback를 하기 전에,
up하고 있는 파일의 컬럼명을 변경해 버렸습니다.



위의 이미지에서는 모두 "up"으로 되어 있습니다만, 이 상태에서 컬럼명을 변경하기 위한 조작을 해 버렸습니다.
특히 % rails generate migration rename_ "변경 전 열 이름"column_to"모델 이름"입니다. Add나 Drop도 하고 있었습니다.

터미널
% heroku run rails db:migrate 

위를 실행했을 때에 문자나 숫자 안에 있는 한 문장이 있어서 “migrate 파일의 orders(내가 만든 migrate 파일명입니다)가 없어요”라고도 했고,

터미널
% rails db:migrate

위를 실행했을 때에도 orders에 +α로 "이 컬럼 이름이 없어"라는 것을 말했습니다.

3. 어떻게 해결하는가?



그냥하는 것은 분명했고, migrate 파일의 차이를 없애기 위해 정리했습니다.

이번에는 어쨌든 빨리 오류를 해결하고 싶었기 때문에 이미지를 준비하는 것을 잊었습니다.

이 때는 반드시 삭제가 발생한다 (=migrate 파일의 삭제입니다만 결과적으로는 DB를 괴롭히게 된다) 때문에 % rails db:rollback 를 반드시 실시했습니다.
(rollback하면 DB의 테이블 내용은 사라집니다만 개발 단계에서는 특별히 문제는 없다고 생각합니다.)

% rails db:migrate:status에서도 "down"하고 있는지 확인했습니다.
자신은 해당 테이블의 컬럼명의 Rename이나 Add, 테이블의 Drop을 실시하고 있었으므로 순서를 쫓아 무엇이 필요하고 무엇이 지워도 문제 없는지를 신중하게 실시하면서 정리했습니다.
% rails db:migrate를 하면 잘 작동했기 때문에 heroku에서도 시도해 보면 잘 갔습니다.


4. 여기에서 배운 것 (오류시에 사용)



지금 생각해 보면 rollback하지 않고, 마음대로 DB상에서 테이블을 삭제하거나, 롤백하고 있지만 다른 파일로 컬럼명을 추가하거나 여러가지 많이 하고 있었습니다. 그 때에 migrate해도 왠지 에러가 나오므로 마음대로 삭제등을 실시해 잘 되어 버렸으므로, 대나무가 돌아서 하루도 지출하는 형태가 되어 버렸습니다.

실은 자신이 이 기사를 쓴 에러( git push heroku master 할 때의 에러 해소 방법 )의 앞에 일어난 일이었기 때문에 , migrate 파일을 개선했는데 왜 heroku의 master에 push 할 수 없는가라고 초조하고 있었습니다. migrate 파일이나 DB 관계는 특별히 주의해서 취급하지 않으면 수정이 정말로 힘들어지는 것을 실감했습니다. 또 rollback할 때는 % rails db:rollback STEP="숫자"를 하는 것으로 up의 개소로부터 상방향”숫자”번째까지 롤백해 줍니다. 수고와 실수를 생략할 수 있는 기술입니다.

좋은 웹페이지 즐겨찾기