【问题标题】:(2002, "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)")(2002,“无法通过套接字'/tmp/mysql.sock'(2)连接到本地MySQL服务器”)
【发布时间】:2019-02-28 20:23:50
【问题描述】:

我在 mac 上使用自制 mysql,制作 django 应用程序。我也使用jupyter。我不知道其中哪一个是问题的根本原因。

我曾经时不时收到此错误消息,我知道如何解决它:只需输入 brew services restart mysql 并稍等片刻。

问题是它现在发生的频率越来越高,每小时几次。在本地机器上工作时,是否有已知的解决方法?

我想,由于我经常使用ctrl-c 编程,这可能会耗尽连接池,因此我使用SET GLOBAL max_connections = 5000; 增加了连接池大小,但这并没有帮助。

【问题讨论】:

  • 您是否验证了 mysql 确实在运行,例如通过在终端中运行 ps aux | grep mysqld
  • @kristaps 是的,mysql 正在运行。通常,当这种情况发生时,我正在运行的某些东西会开始显示错误,但其他不会。
  • 连接失败前后服务器日志中是否有任何错误?

标签: python mysql django jupyter


【解决方案1】:

只是一个建议 - 我会给 Docker 一个机会(因为你不断受到这些干扰)

创建一个新容器,它将运行您的 MySQL 服务器,向 DB 服务器公开一个端口,然后从您的 mac 连接到该端口。

这里有一个很好的资源来帮助您入门 - https://docs.docker.com/samples/library/mysql/#-via-docker-stack-deploy-or-docker-compose

或者,如果您不必使用 MySQL,您可以尝试使用 PostgreSQL。这是一篇很好的文章 - https://medium.com/agatha-codes/painless-postgresql-django-d4f03364989 。许多 django 项目在生产中使用它,因为它提供了更多功能。

【讨论】:

  • 这已经是一个在生产中运行的大型服务,切换数据库不是一个选项。如果没有其他方法,我可能会在本地尝试 Docker。
  • 为什么投反对票?我的建议显然是针对您的本地环境,因为您没有在任何地方提到它是生产服务器。您是否检查了您的 settings.py 文件对于您的本地环境是否正确(例如,您没有尝试从您的计算机连接到您的生产服务器)?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-28
  • 2011-12-12
  • 2012-06-21
  • 2013-03-05
相关资源
最近更新 更多