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, )
여기에 특수문자가 섞여 들어가서 발생한 문제였습니다.