_mysql.pyd模块错误处理主机名

时间:2014-07-29 20:21:46

标签: python django mysql-python

注意:我已经看到this question中的人显然遇到了同样的问题,但由于一年多没有出现任何有用的东西,而且我有更多的线索,我在自己问在这里。


我正在使用带有Django 1.2.7的Python 2.7.3(代码库需要较旧版本的Django,但我还没有减少Python的版本。这可能会导致下面的冲突。)

在配置文件中将用户名配置为“django”并将主机名配置为“correcthostname”后,我在控制台中尝试python manage.py runserver。这导致跟踪以此错误结束:

File "C:\Python27\lib\site-packages\MySQLdb\connections.py", line 188, in __init__
super(Connection, self).__init__(*args, **kwargs2)

_mysql_exceptions.OperationalError: (1045, "Access denied for user 'django'@'wronghostname.com' (using password: YES)")

其中“wronghostname.com”是我当前机器的地址。此异常似乎来自_mysql.pyd模块,因为Connection对象定义为

class Connection(_mysql.connection):

由于某种原因,_mysql.connection中的__init__函数会破坏主机名。我确认args和kwargs2包含“correcthostname”因为我打印了它们。显然,_mysql.pyd中的某些内容错误处理了进入它的主机信息。

我不知道我可以用* .pyd模块做什么。我想我要么需要一个正确处理主机名的版本,要么是一些等效的解决方案。我想过尝试直接在“correcthostname.com”上运行,但可能无法直接在机器上运行。我被问到是否可以从自己的机器上运行。

感谢您的任何建议!

1 个答案:

答案 0 :(得分:1)

这是两个不同的主机名,用于两个不同的目的。 " correcthostname"你提供给Django的是运行MySQL服务器的计算机的名称。 " wronghostname.com"在错误消息中是尝试连接到MySQL服务器的客户端计算机的名称。或者至少MySQL服务器认为客户端机器名是在进行反向IP命名查找之后。如果客户端和服务器在同一台计算机上运行,​​则这两个名称将相同。

所以没有拙劣的" correcthostname"按_mysql.pyd或其他任何内容。它能够成功连接到运行在" correcthostname"上的MySQL服务器,因为它产生了"访问被拒绝"信息。如果" wronghostname.com"不是客户端计算机的正确名称(运行Django的那个),那么MySQL服务器端就出现了问题。