Python encode/databases 사용 시 connection 안되는 에러

conn = await connect(echo=self._echo, loop=self._loop,
  File "/home/ubuntu/.pyenv/versions/3.9.13/envs/auction_39/lib/python3.9/site-packages/aiomysql/connection.py", line 75, in _connect
    await conn._connect()
  File "/home/ubuntu/.pyenv/versions/3.9.13/envs/auction_39/lib/python3.9/site-packages/aiomysql/connection.py", line 558, in _connect
    raise OperationalError(2003,
pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on 'localhost'")

python에서 사용할 수 있는 비동기 database 라이브러리인 encode/databases 사용 시 위와 같은 오류가 발생했습니다.

필자가 겪은 위 에러의 이유는 mysql 패스워드에 특수문자를 사용했기 때문입니다. database 객체 생성 시 패스워드를 아래와 같은 형태로 접속하도록 했는데요.

db_conn_string = 'mysql://%s:%s@%s/%s?charset=utf8' % (
    config.DB_USER,
    config.DB_PASSWORD,
    config.DB_HOST,
    config.DB_NAME,
)

여기에 특수문자가 섞여 들어가서 발생한 문제였습니다.

Leave a Reply