O'F*_*mah 33 python mysql mysql-error-2003
我正在尝试使用PyMySQL连接到localhost上的MySQL:
import pymysql
conn = pymysql.connect(db='base', user='root', passwd='pwd', host='localhost')
Run Code Online (Sandbox Code Playgroud)
但是(在Python 2.7和Python 3.2上)我得到错误:
socket.error:[Errno 111]连接被拒绝
pymysql.err.OperationalError:(2003,"无法连接到'localhost'上的MySQL服务器'(111)")
我确定mysqld正在运行,因为我可以使用mysql命令或phpMyAdmin 进行连接.而且,我可以使用几乎相同的代码在Python 2上使用MySQLdb进行连接:
import MySQLdb
conn = MySQLdb.connect(db='base', user='root', passwd='pwd', host='localhost')
Run Code Online (Sandbox Code Playgroud)
似乎问题出在PyMySQL方面而不是MySQL上,但我不知道如何解决它.
Rec*_*nic 55
两个猜测:
运行mysqladmin variables | grep socket
以获取套接字所在的位置,并尝试设置如下连接:
pymysql.connect(db='base', user='root', passwd='pwd', unix_socket="/tmp/mysql.sock")
Run Code Online (Sandbox Code Playgroud)运行mysqladmin variables | grep port
并验证端口是3306.如果没有,您可以手动设置端口,如下所示:
pymysql.connect(db='base', user='root', passwd='pwd', host='localhost', port=XXXX)
Run Code Online (Sandbox Code Playgroud)似乎更改localhost
为127.0.0.1
修复错误,至少在我的配置中.如果没有,我会查找错误tcp sockets connection
,当然,将其作为bugtrack中的pymysql
错误发布.
小智 5
我通过更换解决的问题,localhost
与127.0.0.1
和更改密码,以我的MySQL数据库的密码,如下图所示;
conn = pymysql.connect(
host = '127.0.0.1',
port = 3306,
user = 'root',
passwd = 'XXXXXXXXX',
db = 'mysql'
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
69605 次 |
最近记录: |