【Rails】 Mysql2::Error::ConnectionError 해결
3006 단어 MySQLRailsdocker-compose밸리데이션도커
데이터를 저장하고 싶지만 Mysql2에 연결할 수 없습니다.
Docker 환경하의 Rails 앱에서 app/models에 밸리데이션을 정의하고 동작 체크를 위해 MySQL에 데이터 등록을 시도했습니다. 그렇다면.....
Mysql2::Error::ConnectionError at /Unknown MySQL server host 'db' (0)
MySQL에 연결되어 있지 않다고 분노했습니다.
정확히 같은 오류 에 빠져 있는 분도 있었습니다만, 해결책은 실려 있지 않습니다.
기사에 실려 있던 docker-compose up을 실천하는 것도, docker는 정상적으로 기동하고 있었습니다.
어쨌든 데이터가 등록되지 않았기 때문에 다음은 데이터베이스를 확인했습니다.
①rails db:create
②rails db:migrate
그러나 좋지 않았습니다.
아래는 rails db : create 실행 후 터미널에 출력 된 오류
Unknown MySQL server host 'db' (0)
Couldn't create 'myapp_development' database. Please check your configuration.
rails aborted!
Mysql2::Error::ConnectionError: Unknown MySQL server host 'db' (0)
/Users/athlaliel/test/qa-coin/bin/rails:9:in `<top (required)>'
/Users/athlaliel/test/qa-coin/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Tasks: TOP => db:create
(See full trace by running task with --trace)
이 후에도 여러가지 시도한 결과 원인을 알았습니다.
Docker 환경에서 앱을 만들고 있는데, 실제로는 로컬 환경에서 오로지 명령을 두드리고 있었습니다. Docker의 컨테이너에서 MySQL도 관리되고있는 이상, 찾을 수 없었습니다.
아래의 명령을 순서대로 실행하는 것으로 무사히 데이터베이스는 작성되어 갱신도 가능하게 되었습니다.
①docker-compose exec web rails db:create
②docker-compose exec web rails db:migrate
유효성 검증 데이터 등록
데이터베이스가 Docker에 생성되었으므로 테스트 데이터를 등록하고 유효성 검사가 작동하는지 확인합니다. rails console을 시작하고 테스트 데이터를 등록합니다.
바리데이션에 기술하는 문장은 여기에서는 쓰지 않습니다만, 변수를 정의해 <모델명.create>를 입력합니다.
이 커멘드로 데이터 등록이 성공하면, SQL과 같은 문언이 표시되어 데이터의 저장까지 실시합니다. 따라서 별도의 .save 명령을 입력할 필요가 없습니다.
만약 에러가 일어나면, 아래의 커멘드로 체크해 원인의 추구를 실시합니다.
pry(main)> <モデル名>.errors
※user.rbというmodelsファイルがあれば、user.errorsとターミナルに入力します。
Mysql2::Error::ConnectionError와 같은 오류가 발생하면 현재 어떤 환경에서 작업하고 있는지 확인해 보는 것이 좋습니다.
참고 기사
Unknown MySQL server host 'db'(0) 오류가 사라지지 않음
Active Record 유효성 검사
Reference
이 문제에 관하여(【Rails】 Mysql2::Error::ConnectionError 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/athlaliel/items/7064350a3d08f4c0cff1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Mysql2::Error::ConnectionError at /Unknown MySQL server host 'db' (0)
①rails db:create
②rails db:migrate
Unknown MySQL server host 'db' (0)
Couldn't create 'myapp_development' database. Please check your configuration.
rails aborted!
Mysql2::Error::ConnectionError: Unknown MySQL server host 'db' (0)
/Users/athlaliel/test/qa-coin/bin/rails:9:in `<top (required)>'
/Users/athlaliel/test/qa-coin/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Tasks: TOP => db:create
(See full trace by running task with --trace)
①docker-compose exec web rails db:create
②docker-compose exec web rails db:migrate
데이터베이스가 Docker에 생성되었으므로 테스트 데이터를 등록하고 유효성 검사가 작동하는지 확인합니다. rails console을 시작하고 테스트 데이터를 등록합니다.
바리데이션에 기술하는 문장은 여기에서는 쓰지 않습니다만, 변수를 정의해 <모델명.create>를 입력합니다.
이 커멘드로 데이터 등록이 성공하면, SQL과 같은 문언이 표시되어 데이터의 저장까지 실시합니다. 따라서 별도의
만약 에러가 일어나면, 아래의 커멘드로 체크해 원인의 추구를 실시합니다.
pry(main)> <モデル名>.errors
※user.rbというmodelsファイルがあれば、user.errorsとターミナルに入力します。
Mysql2::Error::ConnectionError와 같은 오류가 발생하면 현재 어떤 환경에서 작업하고 있는지 확인해 보는 것이 좋습니다.
참고 기사
Unknown MySQL server host 'db'(0) 오류가 사라지지 않음
Active Record 유효성 검사
Reference
이 문제에 관하여(【Rails】 Mysql2::Error::ConnectionError 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/athlaliel/items/7064350a3d08f4c0cff1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)