헤로쿠 배포 시, mysql -> clearDB 마이그레이션 방법 #32
Unanswered
DongvinPark
asked this question in
Q&A
Replies: 2 comments 1 reply
-
안녕하세요, 김은호입니다.
제 패스트캠퍼스 앱을 수강해 주셔서 감사합니다.
마이그레이션 명령어가 잘 되지 않은 모양이네요. 기본적인 방법은 잘 찾으신 것 같습니다만
로컬에서 마이그레이션을 의도했던 db 스키마들이 헤로쿠 clear db 에 전혀 들어가지 않은 것 같습니다.
그렇다면 이런 부분을 우선 체크해볼 수 있을 것 같네요.
- 마이그레이션 당시 로컬의 mysql db 서버가 동작하고 있었는가?
- `--fork` 옵션에 들어간 mysql db 경로가 혹시 잘못되진 않았는가?
- 로컬 mysql db 에 스키마가 작성되어 있었는가: ddl-auto 옵션에 따라서는 앱이 종료된 후 스키마가 삭제되는 옵션도 있기
때문에, db를 보면 아무 스키마도 남아있지 않는 경우도 있을 수 있습니다.
그 밖에 해볼 수 있는 것은, 강의에서 실제 개발 상황을 가정하여 함부로 db 스키마를 수정하지 못하게끔 바꿨던 옵션인
`spring.jpa.hibernate.ddl-auto`를 다시 `create`로 활성화시켜서
스프링 부트 애플리케이션이 올라갈 때 db 스키마를 자동으로 작성해줄 수 있게 하는 방법이 가능할 수 있겠습니다.
보내주신 깃헙의 커밋들을 상단에 일부만 살펴봤는데, 74aa431 커밋에서 유사한 시도를 하셨네요.
다만 해당 커밋은 default 프로파일에서 옵션을 설정하셨고 alpha 프로파일은 `validate`를 그대로 두셨으니,
헤로쿠 배포 시에 사용하는 프로파일을 강의대로 alpha 로 설정하셨다면 아무 변화를 느끼지 못하셨을 듯 합니다.
제가 보지 못한 커밋에서 시도해 보셨을 수도 있을 것 같네요.
우선 위의 것들을 재차 체크해보시고, 헤로쿠 db 마이그레이션 관련해서 자신의 시스템에 맞춰 고려해야 하는 다른 설정이 있는지 검색을
해보시는 것도 좋겠습니다.
고맙습니다.
김은호 드림
…On Wed, Aug 10, 2022 at 9:30 AM Dongvin,Park ***@***.***> wrote:
안녕하세요 :) 코로나 get in line 앱 강의를 열심히 수강 중인 학생 박동빈입니다.
강의를 잘 따라와서 이제 마지막으로 헤로쿠에 배포하는 작업만 하면 되는데, 헤로쿠에 배포할 때
DB 마이그레이션이 자꾸 실패해서 질문 드립니다.
헤로쿠에서 안내하고 있는 mysql -> clearDB 마이그레이션 명령어를 사용해서
heroku addons:create cleardb:ignite ***@***.***
:3306/getinline
ClearDB를 헤로쿠 앱에 addon 하고 배포한 후에 open app하면
DATA ACCESS ERROR가 뜹니다.
그래서 heroku logs --tail 명령을 실행해서 로그를 보면,
o.h.engine.jdbc.spi.SqlExceptionHelper : Table
'heroku_2e099a6d4a079c1.event' doesn't exist
라고 뜨고, 헤로쿠의 clearDB를 터미널에서 원격 접속해서 clearDB 내부를 보면
clearDB의 heroku_2e099a6d4a079c1 라는 데이터베이스에 어떤 테이블도 생성돼 있지 않았습니다.
김은호 개발자님도 헤로쿠에서 제공하는 ignite --fork 명령어를 사용하신 것 같은데, 이 명령어로 마이그레이션을 하려면 어떻게
명령어를 작성해야 하는지 궁금합니다.
현재 제가 헤로쿠에 배포해 놓은 깃헙 리포지토리 링크는 아래와 같고, 배포 중인 브랜치는 main 입니다.
감사합니다 :D
https://github.com/DongvinPark/Corona-Get-In-Line
—
Reply to this email directly, view it on GitHub
<#32>, or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABFYMKHHSPE7QKBMNGTVWIDVYLZ2PANCNFSM56CTVNVQ>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
1 reply
-
안녕하세요, 김은호입니다.
문제가 잘 해결되어서 다행입니다.
place 테이블 id가 증가하는 방식이 이상해 보이지만, 정상 동작입니다.
ClearDB 에서는 auto increment 증가값이 10 으로 동작합니다.
이런 부분은 개의치 않으셔도 됩니다. auto increment 란 결국, 얼마에서 시작해서 얼마씩 증가하는지를 db에게 맡기겠다는
뜻입니다.
db가 1, 2, 3, 4, ... 로 하지 않았어도 그게 의도된 동작이라면 문제는 없겠지요.
다만 이런 경우를 대비해서 샘플 데이터는 id 값을 직접 지정해주는 것이 좋을 때가 있습니다.
data.sql 에서 insert into place (...) 해주는 부분에 id 를 일일이 직접 넣어주면, 연관 테이블의
place_id 와 실제 부여된 id가 달라지는 문제를
예방할 수 있습니다.
아래 참고 문서를 첨부할테니 읽어보세요.
고맙습니다.
김은호 드림
## Reference
* https://w2.cleardb.net/faqs/#general_16
…On Thu, Aug 11, 2022 at 9:50 AM Dongvin,Park ***@***.***> wrote:
알려주신대로 alpha 프로파일의 ddl-auto를 create로 변경하고, 다시 배포해봤더니 이번에는 헤로쿠 DB에 place
테이블이 생기기는 했는데,
헤로쿠 DB에서는 place 테이플의 튜플들의 id를 1,2,3,4,5... 가 아니라, 4,14,24,34,44...이런 식으로
부여하고 있었습니다.
그래서 알려주신 내용을 적용하여 헤로쿠에 첫 배포했을 때는 event 테이블의 튜플들이 가지고 있는 placeId가 place테이블의
id와
일치하지 않는다는 Foreign Key 관련 예외가 떴습니다.
그래서 getinline 앱 내의 data.sql의 event, admin_place_map의 placeId, 관련 값들을
4,14,24,34,44...의 번호부여 규칙에 맞게 수정했더니
드디어 배포가 성공적으로 이루어졌습니다.
첫 배포를 성공했으니, DB마이그레이션이나 다른 조건들도 테스트해가며 더 공부하겠습니다. 감사합니다 :D
—
Reply to this email directly, view it on GitHub
<#32 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABFYMKEWXOEDUFV22OZB573VYRE6FANCNFSM56CTVNVQ>
.
You are receiving this because you commented.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
안녕하세요 :) 코로나 get in line 앱 강의를 열심히 수강 중인 학생 박동빈입니다.
강의를 잘 따라와서 이제 마지막으로 헤로쿠에 배포하는 작업만 하면 되는데, 헤로쿠에 배포할 때
DB 마이그레이션이 자꾸 실패해서 질문 드립니다.
헤로쿠에서 안내하고 있는 mysql -> clearDB 마이그레이션 명령어를 사용해서
heroku addons:create cleardb:ignite --fork=mysql://root:1234@localhost:3306/getinline
ClearDB를 헤로쿠 앱에 addon 하고 배포한 후에 open app하면
DATA ACCESS ERROR가 뜹니다.
그래서 heroku logs --tail 명령을 실행해서 로그를 보면,
o.h.engine.jdbc.spi.SqlExceptionHelper : Table 'heroku_2e099a6d4a079c1.event' doesn't exist
라고 뜨고, 헤로쿠의 clearDB를 터미널에서 원격 접속해서 clearDB 내부를 보면
clearDB의 heroku_2e099a6d4a079c1 라는 데이터베이스에 어떤 테이블도 생성돼 있지 않았습니다.
김은호 개발자님도 헤로쿠에서 제공하는 ignite --fork 명령어를 사용하신 것 같은데, 이 명령어로 마이그레이션을 하려면 어떻게 명령어를 작성해야 하는지 궁금합니다.
현재 제가 헤로쿠에 배포해 놓은 깃헙 리포지토리 링크는 아래와 같고, 배포 중인 브랜치는 main 입니다.
감사합니다 :D
https://github.com/DongvinPark/Corona-Get-In-Line
Beta Was this translation helpful? Give feedback.
All reactions