当我在测试套件中尝试连接到本地MySQL服务器时,它 失败并出现错误:
OperationalError: (2002, "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)")
但是,我可以随时通过运行命令行连接到MySQL
mysql
程序。ps aux | grep mysql
显示服务器正在运行,并且
stat /tmp/mysql.sock
确认套接字存在。另外,如果我打开一个
在异常的except
子句中的调试器中,我能够可靠地连接
参数完全相同。
这个问题复制得相当可靠,但似乎不是100%,
因为我的测试套件事实上每过一次
击中这个错误。当我试图用sudo dtruss
运行时,它没有再现。
所有的客户端代码都是用Python编写的,不过我不知道这与什么相关。
切换到使用主机127.0.0.1
会产生错误:
DatabaseError: Can't connect to MySQL server on '127.0.0.1' (61)
对我来说,问题是我没有运行mysql服务器。 先运行服务器,然后执行
mysql
。MySQL手册的相关章节是here。我将从这里列出的调试步骤开始。
另外,记住localhost和127.0.0.1在这个上下文中是不同的:
localhost
,则使用套接字或管道。127.0.0.1
,则客户端将被迫使用TCP/IP。例如,您可以检查数据库是否正在监听TCP连接vi
netstat -nlp
。它似乎正在监听TCP连接,因为您认为mysql -h 127.0.0.1
工作正常。要检查是否可以通过套接字连接到数据库,请使用mysql -h localhost
。如果这些都没有帮助,那么您可能需要发布更多有关MySQL配置的详细信息,以及如何实例化连接等
这对我有效。但是,如果这不起作用,请确保mysqld正在运行并尝试连接。
相关问题 更多 >
编程相关推荐