【问题标题】:MySQLdb cannot resolve localhostMySQLdb 无法解析本地主机
【发布时间】:2012-10-27 23:04:26
【问题描述】:

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

环境:

  • Windows 7(64 位)
  • Python 2.7.2(32 位)
  • MySQLdb 1.2.3
  • MySQL 5.5.28(64 位)

【问题讨论】:

  • @RaunakAgarwal 他的问题已通过恢复他的 hosts 文件得到解决。但是,我的没有修改!
  • 您的主机文件尚未修改,但它是否包含类似 127.0.0.1 localhost 的行取消注释该行已为我修复。

标签: python mysql localhost mysql-python


【解决方案1】:

来自 MySQLdb docs,关于使用localhost

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

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

【讨论】:

  • 我看不到这如何回答我的问题。我错过了什么吗?
【解决方案2】:

【讨论】:

    猜你喜欢
    • 2018-11-27
    • 2021-01-10
    • 2016-01-09
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 2013-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多