我使用MySQL建立了一个基本的事务数据库。使用python / MySQLdb,这很好用:
connection = MySQLdb.connect (host = "127.0.0.1", port = 3306, user = "root", passwd = "password", db = "test")
但这不是:
connection = MySQLdb.connect (host = "localhost", port = 3306, user = "root", passwd = "password", db = "test")
使用后者会产生以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "path\to\virtualenv\lib\site-packages\MySQLdb\__init__.py", line 81, in Connect
return Connection(*args, **kwargs)
File "path\to\virtualenv\lib\site-packages\MySQLdb\connections.py", line 187, in __init__
super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (2003, "Can't connect to MySQL server on 'localhost' (10061)")
我不得不承认我为什么MySQLdb无法解析localhost有点困惑。 C:\ Windows \ System32 \ drivers \ etc \ hosts文件尚未进行过修改。使用常规Windows命令提示符ping localhost
和telnet localhost 3306
都可以正常工作。
环境:
答案 0 :(得分:1)
来自MySQLdb docs,关于使用localhost
:
这将创建与本地运行的MySQL服务器的连接 机器通过UNIX套接字。 UNIX套接字和命名管道不起作用 通过网络,所以如果你指定一个主机而不是localhost,TCP 将使用,如果需要,您可以指定一个奇数端口。
您的服务器可能会侦听TCP套接字。
答案 1 :(得分:0)