3

我已经使用 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都可以正常工作。

环境:

  • Windows 7(64 位)
  • Python 2.7.2(32 位)
  • MySQL数据库 1.2.3
  • MySQL 5.5.28(64 位)
4

2 回答 2

1

来自 MySQLdb docs,关于使用localhost

这将通过 UNIX 套接字创建与本地计算机上运行的 MySQL 服务器的连接。UNIX 套接字和命名管道不能在网络上工作,因此如果您指定 localhost 以外的主机,将使用 TCP,如果需要,您可以指定一个奇数端口。

您的服务器可能侦听 TCP 套接字。

于 2012-11-07T20:16:42.763 回答
0

这可能是 IPv6 问题。如果是这样,它可以通过解决

http://www.victor-ratajczyk.com/post/2012/02/25/mysql-fails-to-resolve-localhost-disable-ipv6-on-windows.aspx

于 2012-11-07T21:16:12.770 回答