【Heroku】 프로덕션 환경에서 "We're sorry, but something went wrong."오류
오류 내용
프리마 앱을 Heroku에 올려 제품을 출품하려고했는데, 에러 발생.
오류가 발생한 환경 설정 상태
해결된 명령(결론)
Heroku의 대원을 재시작하면 고쳤다!
f.〇〇@〇〇noMacBook-Air furima-29074 % heroku restart
오류를 확인하고 해결까지의 흐름(자세히 알아보기)
특정을 위해, 우선은 확인!
(1) 로컬 환경에서는, 같은 출품 작업을 할 수 있을까?
결과: 전시할 수 있었다. (왼쪽 상단의 테스트 이미지)
(2) 데이터베이스가 반영되고 있습니까?
결과: 최신이었다.
f.〇〇@〇〇noMacBook-Air furima-29074 % heroku run rails db:migrate:status
(省略)
up 20201121005023 Devise create users
up 20201123065101 Create items
up 20201123075851 Create active storage tablesactive storage
up 20201204112402 Create orders
up 20201204112701 Create payments
(省略)
(3)master는 최신? 커밋 되었습니까?
결과: 최신이었다.
f.〇〇@e〇〇noMacBook-Air furima-29074 % git push heroku master
Everything up-to-date
로그를 확인하자!
f.〇〇@〇〇noMacBook-Air furima-29074 % heroku logs
그중에undefined method ’prefecture_id'
Did you mean? prefecture
prefecture는 정의되지 않았습니까? 여기 이상한거야? 그리고 메시지.
떠오르는 절
(내 상황에서는) itemsテーブル
와 paymentsテーブル
에서 공통 Active Hash
를 사용.
최초의 데이터베이스 설계 시점에서는, 공통으로 사용할 수 있는 것을 눈치채지 못하고, 나중에 공통의 컬럼명으로 변경한 경위가 있었다. (변경 후의 컬럼명이 prefecture_id
)
이 상황에서 가설을 세우자!
가설 1:데이터베이스(컬럼명)가 프로덕션 환경에 잘 반영하고 있지 않는 것은?
데이터베이스 재설정.
결과 : 다시 로그를 확인해도 개선되지 않습니다.
f.○○@○○noMacBook-Air furima-29074 % heroku run RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rake db:migrate:reset
가설 2:내용은 맞는데, 에러가 나오기 때문에, 그냥 버그?
Heroku를 다시 시작. (초기, 결론의 명령)
결과: 고쳐! ! 🎉
f.〇〇@〇〇noMacBook-Air furima-29074 % heroku restart
배운 것 (이해가 얕은 것)
f.〇〇@〇〇noMacBook-Air furima-29074 % heroku restart
특정을 위해, 우선은 확인!
(1) 로컬 환경에서는, 같은 출품 작업을 할 수 있을까?
결과: 전시할 수 있었다. (왼쪽 상단의 테스트 이미지)
(2) 데이터베이스가 반영되고 있습니까?
결과: 최신이었다.
f.〇〇@〇〇noMacBook-Air furima-29074 % heroku run rails db:migrate:status
(省略)
up 20201121005023 Devise create users
up 20201123065101 Create items
up 20201123075851 Create active storage tablesactive storage
up 20201204112402 Create orders
up 20201204112701 Create payments
(省略)
(3)master는 최신? 커밋 되었습니까?
결과: 최신이었다.
f.〇〇@e〇〇noMacBook-Air furima-29074 % git push heroku master
Everything up-to-date
로그를 확인하자!
f.〇〇@〇〇noMacBook-Air furima-29074 % heroku logs
그중에
undefined method ’prefecture_id'
Did you mean? prefecture
prefecture는 정의되지 않았습니까? 여기 이상한거야? 그리고 메시지.떠오르는 절
(내 상황에서는)
itemsテーブル
와 paymentsテーブル
에서 공통 Active Hash
를 사용.최초의 데이터베이스 설계 시점에서는, 공통으로 사용할 수 있는 것을 눈치채지 못하고, 나중에 공통의 컬럼명으로 변경한 경위가 있었다. (변경 후의 컬럼명이
prefecture_id
)이 상황에서 가설을 세우자!
가설 1:데이터베이스(컬럼명)가 프로덕션 환경에 잘 반영하고 있지 않는 것은?
데이터베이스 재설정.
결과 : 다시 로그를 확인해도 개선되지 않습니다.
f.○○@○○noMacBook-Air furima-29074 % heroku run RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rake db:migrate:reset
가설 2:내용은 맞는데, 에러가 나오기 때문에, 그냥 버그?
Heroku를 다시 시작. (초기, 결론의 명령)
결과: 고쳐! ! 🎉
f.〇〇@〇〇noMacBook-Air furima-29074 % heroku restart
배운 것 (이해가 얕은 것)
log/development.log
와, log/test.log
는 어디까지나 개발·테스트 환경의 로그로서, 프로덕션 환경의 로그는 터미널로부터 확인하는 것을 이해했다. Sequel Pro
와 같은 UI로 보도록 하려면 SSH
를 넣지 않는다고 알았다. 다만, 기본은 터미널이라고 하는 것으로, 보다 커맨드의 서랍을 넓히고 싶다(필요에 따라서 사용할 수 있게 되고 싶다)라고 생각했다. 이상입니다.
똑같이 곤란한 사람의 해결이 되면 다행입니다.
(잘못되었을 때는 말해주세요!)
Reference
이 문제에 관하여(【Heroku】 프로덕션 환경에서 "We're sorry, but something went wrong."오류), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/cherry_2020/items/0144d1e77f62425ddc2b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)