【Rails】 Heroku에 배포 후 일부 페이지에서 500 오류 (Internal Server Error)
소개
프로덕션 환경에서 500 오류가 발생합니다.
1주일 정도 고민해 드디어 개선했으므로 이 기회에 정리해 두고 싶습니다.
발생한 문제
로컬 환경에서는 문제없이 움직이지만, (PostgreSQL에의 대응 등은 끝나고 있다)
Heroku에 배포하면 일부 페이지를 열 때 500 오류가 나와 "We're sorry, but something went wrong."가 된다.
heroku logs -t
로그를 봐도 500이라고 쓰는 것만으로 무엇이 나쁜지 잘 모르겠다.
2021-05-14T16:33:21.741002+00:00 heroku[router]: at=info method=GET path="/recipes" host=myapp.herokuapp.com request_id=58d9aaaf-b1c3-46ab-a97c-51d54f102341 fwd="14.10.86.33" dyno=web.1 connect=1ms service=23ms status=500 bytes=1827 protocol=https
대처
마이그레이션 실행
DB의 마이그레이션이 잘 되지 않는 경우가 많은 것 같기 때문에, heroku run rails db:migrate
(을)를 시도해 보지만, 특히 에러도 나오지 않고 실행할 수 있었다. 하지만 그래도 개선되지 않는다.
설정 등 여기저기 봐도 나쁜 곳은 없을 것 같아・・・
결론
다시 한번 Heroku의 로그를 검토해 보면 왠지 썼다.
FATAL -- : ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "recipes" does not exist
WHERE a.attrelid = '"recipes"'::regclass
조사해 보면 아무래도 「테이블이 없어」라는 의미다.
그래서 heroku run rails c
로 콘솔 기동해 モデル名.column_names
로 컬럼명 확인하면 테이블이 없으면 에러가 나왔다.
원인은 이것이었던 것 같다.db:migrate
에서 잘 못했기 때문에 DB 리셋으로 대처하는 것.
heroku pg:reset DATABASE_URL
명령 실행
WARNING: Destructive action
▸ データベース名 will lose all of its data
▸
▸ To proceed, type アプリ名 or re-run this command with --confirm
이런 메시지가 나오므로 앱 이름을 입력하여 실행하면 리셋 완료.
다시 heroku run rails db:migrate
실행하고 콘솔에서 테이블을 확인하면 이번에는 제대로 테이블을 만들 수 있습니다.
배포한 앱도 정상적으로 움직이게 되었다.
마지막으로
이번 배운 것은 로그는 매우 중요하다는 것.
무엇이 좋지 않을까 제대로 써있고, 앞으로는 제대로 보도록 하자.
500 오류로 고민하는 사람이 꽤 있다고 생각하기 때문에
이 기사가 도움이 되길 바랍니다.
Reference
이 문제에 관하여(【Rails】 Heroku에 배포 후 일부 페이지에서 500 오류 (Internal Server Error)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ay4528/items/50430899956d1606a28d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
로컬 환경에서는 문제없이 움직이지만, (PostgreSQL에의 대응 등은 끝나고 있다)
Heroku에 배포하면 일부 페이지를 열 때 500 오류가 나와 "We're sorry, but something went wrong."가 된다.
heroku logs -t
로그를 봐도 500이라고 쓰는 것만으로 무엇이 나쁜지 잘 모르겠다.2021-05-14T16:33:21.741002+00:00 heroku[router]: at=info method=GET path="/recipes" host=myapp.herokuapp.com request_id=58d9aaaf-b1c3-46ab-a97c-51d54f102341 fwd="14.10.86.33" dyno=web.1 connect=1ms service=23ms status=500 bytes=1827 protocol=https
대처
마이그레이션 실행
DB의 마이그레이션이 잘 되지 않는 경우가 많은 것 같기 때문에, heroku run rails db:migrate
(을)를 시도해 보지만, 특히 에러도 나오지 않고 실행할 수 있었다. 하지만 그래도 개선되지 않는다.
설정 등 여기저기 봐도 나쁜 곳은 없을 것 같아・・・
결론
다시 한번 Heroku의 로그를 검토해 보면 왠지 썼다.
FATAL -- : ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "recipes" does not exist
WHERE a.attrelid = '"recipes"'::regclass
조사해 보면 아무래도 「테이블이 없어」라는 의미다.
그래서 heroku run rails c
로 콘솔 기동해 モデル名.column_names
로 컬럼명 확인하면 테이블이 없으면 에러가 나왔다.
원인은 이것이었던 것 같다.db:migrate
에서 잘 못했기 때문에 DB 리셋으로 대처하는 것.
heroku pg:reset DATABASE_URL
명령 실행
WARNING: Destructive action
▸ データベース名 will lose all of its data
▸
▸ To proceed, type アプリ名 or re-run this command with --confirm
이런 메시지가 나오므로 앱 이름을 입력하여 실행하면 리셋 완료.
다시 heroku run rails db:migrate
실행하고 콘솔에서 테이블을 확인하면 이번에는 제대로 테이블을 만들 수 있습니다.
배포한 앱도 정상적으로 움직이게 되었다.
마지막으로
이번 배운 것은 로그는 매우 중요하다는 것.
무엇이 좋지 않을까 제대로 써있고, 앞으로는 제대로 보도록 하자.
500 오류로 고민하는 사람이 꽤 있다고 생각하기 때문에
이 기사가 도움이 되길 바랍니다.
Reference
이 문제에 관하여(【Rails】 Heroku에 배포 후 일부 페이지에서 500 오류 (Internal Server Error)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ay4528/items/50430899956d1606a28d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
다시 한번 Heroku의 로그를 검토해 보면 왠지 썼다.
FATAL -- : ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "recipes" does not exist
WHERE a.attrelid = '"recipes"'::regclass
조사해 보면 아무래도 「테이블이 없어」라는 의미다.
그래서
heroku run rails c
로 콘솔 기동해 モデル名.column_names
로 컬럼명 확인하면 테이블이 없으면 에러가 나왔다.원인은 이것이었던 것 같다.
db:migrate
에서 잘 못했기 때문에 DB 리셋으로 대처하는 것.heroku pg:reset DATABASE_URL
명령 실행WARNING: Destructive action
▸ データベース名 will lose all of its data
▸
▸ To proceed, type アプリ名 or re-run this command with --confirm
이런 메시지가 나오므로 앱 이름을 입력하여 실행하면 리셋 완료.
다시
heroku run rails db:migrate
실행하고 콘솔에서 테이블을 확인하면 이번에는 제대로 테이블을 만들 수 있습니다.배포한 앱도 정상적으로 움직이게 되었다.
마지막으로
이번 배운 것은 로그는 매우 중요하다는 것.
무엇이 좋지 않을까 제대로 써있고, 앞으로는 제대로 보도록 하자.
500 오류로 고민하는 사람이 꽤 있다고 생각하기 때문에
이 기사가 도움이 되길 바랍니다.
Reference
이 문제에 관하여(【Rails】 Heroku에 배포 후 일부 페이지에서 500 오류 (Internal Server Error)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ay4528/items/50430899956d1606a28d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【Rails】 Heroku에 배포 후 일부 페이지에서 500 오류 (Internal Server Error)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ay4528/items/50430899956d1606a28d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)