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ドキュメントから、使用について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 に答える