执行廖雪峰老师案例时出现的问题【pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1'"】

跟着GitHub里面的内容码代码,在连接数据库那段实验代码时出现了以下的错误:

Traceback (most recent call last):
  File "D:\Python\lib\site-packages\aiomysql\connection.py", line 461, in _connect
    self.host_info = "socket %s:%d" % (self._host, self._port)
TypeError: %d format: a number is required, not str

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "G:/awesome-python3-webapp1/www/test.py", line 17, in 
    loop.run_until_complete(test())
  File "D:\Python\lib\asyncio\base_events.py", line 466, in run_until_complete
    return future.result()
  File "D:\Python\lib\asyncio\futures.py", line 293, in result
    raise self._exception
  File "D:\Python\lib\asyncio\tasks.py", line 239, in _step
    result = coro.send(None)
  File "G:/awesome-python3-webapp1/www/test.py", line 11, in test
    await orm.create_pool(loop=loop, host='127.0.0.1', port='3306', user='root', password='123456', db='awesome')
  File "G:\awesome-python3-webapp1\www\orm.py", line 27, in create_pool
    loop=loop
  File "D:\Python\lib\site-packages\aiomysql\utils.py", line 66, in __await__
    resp = yield from self._coro
  File "D:\Python\lib\site-packages\aiomysql\pool.py", line 28, in _create_pool
    yield from pool._fill_free_pool(False)
  File "D:\Python\lib\site-packages\aiomysql\pool.py", line 164, in _fill_free_pool
    **self._conn_kwargs)
  File "D:\Python\lib\site-packages\aiomysql\utils.py", line 61, in __iter__
    resp = yield from self._coro
  File "D:\Python\lib\site-packages\aiomysql\connection.py", line 80, in _connect
    yield from conn._connect()
  File "D:\Python\lib\site-packages\aiomysql\connection.py", line 490, in _connect
    self._host) from e
pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1'")

原始代码:

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

import orm
from models import User, Blog, Comment
import asyncio


loop = asyncio.get_event_loop()
async def test():
    await orm.create_pool(loop=loop, host='127.0.0.1', port='3306', user='root', password='123456', db='awesome')
    u = User(name='Test', email='[email protected]', passwd='1234567890', image='about:blank')
    await u.save()


if __name__ == '__main__':
        loop.run_until_complete(test())

可以看到最后的报错信息是 pymysql.err.OperationalError。百度上找了很久,都找不到办法。个人感觉使用这个错误去查找问题实在是太难,因为个人感觉如果连接不上数据库就会抛这个错误。所以还不如找找前面的错误

比如说:我这个问题后面返回来查找了一下,是端口号使用时字符串,前面的“TypeError: %d format: a number is required, not str” 这个提示已经说明了,所以说翻找前面的最初报错可能会出现意想不到的效果。

希望能帮到你们!

你可能感兴趣的:(错误集锦)