2012-11-07 74 views
3

我已经使用MySQL建立了一个基本的事务数据库。使用python/MySQLdb的,这工作得很好: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 localhosttelnet localhost 3306都可以正常工作。

环境:

  • 视窗7(64位)
  • 的Python 2.7.2(32位)
  • MySQLdb的1.2.3
  • 的MySQL 5.5.28(64位)
+0

http://stackoverflow.com/questions/4662364/cant-connect-to-localhost-using-pythons-mysqldb –

+0

@RaunakAgarwal他的问题的可能的复制来解决了通过恢复他的主机文件解决。但是,我的修改没有改变! – RedsChineseFood

+0

你的主机文件没有被修改,但它是否包含像127.0.0.1 localhost这样的行取消注释该行为我解决了这个问题。 – fastmultiplication

回答

1

来自MySQLdb docs,关于使用localhost

This creates a connection to the MySQL server running on the local machine via a UNIX socket. UNIX sockets and named pipes don't work over a network, so if you specify a host other than localhost, TCP will be used, and you can specify an odd port if you need to.

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

+1

我无法看到这是如何回答我的问题。我错过了什么吗? – RedsChineseFood