跟着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” 这个提示已经说明了,所以说翻找前面的最初报错可能会出现意想不到的效果。
希望能帮到你们!