2017-11-22 12 views
1

서버리스 아키텍처를위한 로컬 개발 설정을 시도하고 있습니다. Amazon은 SAM Local Beta를 제공합니다. 하지만 우리 프로젝트에서 우리는 mysql 데이터베이스를 사용하고있다. 내 로컬 mysql 서버에 연결하지 못했습니다. 내가 pycharm뿐만 아니라 명령 줄을 사용하여 연결을 만들 수 있어요샘 로컬 내 mysql 데이터베이스 연결

import json 
import pymysql 


def lambda_sandbox_down_handler(event, context): 
    rds_host = 'localhost' 
    name = 'localhost' 
    password = 'localhost' 
    db_name = 'localhost' 
    conn = pymysql.connect(rds_host,port=3306, user=name, passwd=password, 
          db=db_name,charset='utf8mb4',connect_timeout=5) 
    return conn 

:

module initialization error: 
(2003, "Can't connect to MySQL server on 'localhost' 
([Errno 99] Cannot assign requested address)") 

다음은 내 파이썬 코드입니다.

SAM 로컬에서 내 질문에 답변 할 수 있습니다.

mysql의 도커 이미지를 설치하고 시작했습니다. 이 후에도 여전히 같은 오류가 발생합니다.

+0

이 문제가 해결 되었습니까? https://stackoverflow.com/questions/6885164/pymysql-cant-connect-to-mysql-on-localhost ('localhost'를 사용하는 대신 IP 지정) –

+0

내게 동일한 오류가 나타납니다. –

+0

발견 된 모든 해결책 이 문제는? – fakataha

답변

1

SAM 로컬 도구는 Docker 컨테이너에서 람다 함수를 실행합니다. localhost은 컨테이너 내부에서 호스트 컴퓨터 IP로 확인되지 않습니다.

Mac 용 Docker를 사용하는 경우 데이터베이스 호스트로 특수 DNS 이름 docker.for.mac.localhost을 사용할 수 있습니다.

다른 운영체제에서는 docker0 네트워크 인터페이스에서 호스트 IP를 찾아 데이터베이스 호스트로 사용할 수 있습니다. 예를 들어 참조 : From inside of a Docker container, how do I connect to the localhost of the machine?

+1

감사합니다. 오류 : ECONNREFUSED 127.0.0.1:3306에 연결하십시오. 토끼 구멍은 DB가 연결을 허용하지 않는 이유를 찾고 있습니다. 사실, localhost가 docker 내에서 작동하지 않습니다. – toonsend