本文共 5037 字,大约阅读时间需要 16 分钟。
报错修复:bpymysql.err.OperationalError: (2003, “Can’t connect to MySQL server on ‘127.0.0.1’”)
报错日志
D:\python3-webapp-Su\www>python app.pyINFO:root:建立数据库连接池Traceback (most recent call last): File "C:\ProgramData\Anaconda3\lib\site-packages\aiomysql\connection.py", line 476, in _connect yield from self._request_authentication() File "C:\ProgramData\Anaconda3\lib\site-packages\aiomysql\connection.py", line 702, in _request_authentication auth_packet = yield from self._read_packet() File "C:\ProgramData\Anaconda3\lib\site-packages\aiomysql\connection.py", line 567, in _read_packet packet.check_error() File "C:\ProgramData\Anaconda3\lib\site-packages\pymysql\connections.py", line 384, in check_error err.raise_mysql_exception(self._data) File "C:\ProgramData\Anaconda3\lib\site-packages\pymysql\err.py", line 107, in raise_mysql_exception raise errorclass(errno, errval)pymysql.err.InternalError: (1049, "Unknown database 'sufadi'")The above exception was the direct cause of the following exception:Traceback (most recent call last): File "app.py", line 79, inloop.run_until_complete(init(loop)) File "C:\ProgramData\Anaconda3\lib\asyncio\base_events.py", line 467, in run_until_complete return future.result() File "app.py", line 63, in init yield from orm.create_pool(loop = loop, host = "127.0.0.1", port = 3306, user = "root", password = "", database = "sufadi") File "D:\python3-webapp-Su\www\orm.py", line 29, in create_pool loop = loop File "C:\ProgramData\Anaconda3\lib\site-packages\aiomysql\utils.py", line 70, in __iter__ resp = yield from self._coro File "C:\ProgramData\Anaconda3\lib\site-packages\aiomysql\pool.py", line 30, in _create_pool yield from pool._fill_free_pool(False) File "C:\ProgramData\Anaconda3\lib\site-packages\aiomysql\pool.py", line 173, in _fill_free_pool **self._conn_kwargs) File "C:\ProgramData\Anaconda3\lib\site-packages\aiomysql\utils.py", line 70, in __iter__ resp = yield from self._coro File "C:\ProgramData\Anaconda3\lib\site-packages\aiomysql\connection.py", line 78, in _connect yield from conn._connect() File "C:\ProgramData\Anaconda3\lib\site-packages\aiomysql\connection.py", line 496, in _connect self._host) from epymysql.err.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1'")
原因就是连接不上 MySQL服务器
先验证一下MySQL的服务是否开启,到计算机->管理->服务和应用程序->服务
右键启动 或者
C:\WINDOWS\system32>net start mysql
(安装路径的根目录D:\mysql-5.6.24-win32)
# For advice on how to change settings please see# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the# *** default location during install, and will be replaced if you# *** upgrade to a newer version of MySQL.[mysqld]# Remove leading # and set to the amount of RAM for the most important data# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.# innodb_buffer_pool_size = 128M# Remove leading # to turn on a very important data integrity option: logging# changes to the binary log between backups.# log_bin# These are commonly set, remove the # and set as required.# basedir = .....# datadir = .....# port = .....# server_id = .....# Remove leading # to set options mainly useful for reporting servers.# The server defaults are faster for transactions and fast SELECTs.# Adjust sizes as needed, experiment to find the optimal values.# join_buffer_size = 128M# sort_buffer_size = 2M# read_rnd_buffer_size = 2M [mysqld]bind-address = 127.0.0.1#设置 3306 端口port = 3306# 设置mysql的安装目录basedir=D:\mysql-5.6.24-win32# 设置mysql数据库的数据的存放目录datadir=D:\mysql-5.6.24-win32\data# 允许最大连接数max_connections=200# 服务端使用的字符集默认为8比特编码的latin1字符集character-set-server=utf8# 创建新表时将使用的默认存储引擎default-storage-engine=INNODBsql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES[mysql]# 设置mysql客户端默认字符集default-character-set=utf8#代码结束
配置参数每次修改,都需要重新启动 mysql
计算机->管理->服务和应用程序->服务->mysql 右键,重新启动即可
yield from orm.create_pool(loop = loop, host = "127.0.0.1", port = 3306, user = "root", password = "", database = "test")
具体如下
@asyncio.coroutinedef init(loop): yield from orm.create_pool(loop = loop, host = "127.0.0.1", port = 3306, user = "root", password = "", database = "test") #创建一个web服务器对象 app = web.Application(loop = loop) #通过router的指定的方法可以把请求的链接和对应的处理函数关联在一起 init_jinja2(app, filters=dict(datetime = datetime_filter)) add_routes(app, "handlers") add_static(app) #运行web服务器,服务器启动后,有用户在浏览器访问,就可以做出对应的响应 # 127.0.0.1 本机地址 srv = yield from loop.create_server(app.make_handler(), "127.0.0.1", 9000) logging.info("服务端 http://127.0.0.1:9000....") return srv# 固定写法loop = asyncio.get_event_loop()loop.run_until_complete(init(loop))loop.run_forever()
D:\python3-webapp-Su\www>python app.pyINFO:root:建立数据库连接池INFO:root:初始化 jinja2INFO:root:设置 jinja2 templates 地址为 D:\python3-webapp-Su\www\templatesINFO:root:add_static /static/ -> D:\python3-webapp-Su\www\staticINFO:root:服务端 http://127.0.0.1:9000....