缺少的mysql.sock; 产生OperationalError:(2002年,“无法通过套接

2019-06-26 05:55发布

首先,我发誓,我看着每一个问题,引用此错误。 几乎所有的解决方案提供了人不同的是,似乎没有人了解该错误的原因的全身。 我和很多人谁遇到这个共同的问题在网络上,需要的,是一个什么样的实际问题的详细说明。

基本上,当我尝试运行:

python manage.py shell
from django.db import connection
cursor = connection.cursor()

使用Django 1.4和Python 2.7.3,我得到以下错误:OperationalError:(2002年, “无法通过套接字 '/tmp/mysql.sock' 连接到本地MySQL服务器(2)”)

我相信我的settings.py文件是正确的。 而我需要的一切已安装状态。 这里是settings.py:

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
    'NAME': 'database_name.mwb',                      # Or path to database file if using sqlite3.
    'USER': 'user',                      # Not used with sqlite3.
    'PASSWORD': 'PASS',                  # Not used with sqlite3.
    'HOST': '/tmp/mysql.sock',                      # Set to empty string for localhost. Not used with sqlite3.
    'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
}}

通过网上淘答案,包括每一个对计算器的周痛苦之后,我得出的结论是,我遇到了真正的问题是,有我的电脑上没有的mysql.sock文件,即使已安装的MySQL。 所以,真正的问题是我如何获得? 答案可能是令人尴尬的简单。

当我运行:

cd /
sudo find . -name ".sock"

我没有得到任何东西。 是的,我已经安装的MySQL 5.25在我的Mac OSX的狮子。 这肯定安装:

sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist
com.mysql.mysqld: Already loaded

但是,在运行:

mysql

收益率:

-bash: mysql: command not found

经过很长一段时间,我发现这个bug: http://bugs.mysql.com/bug.php?id=4174 ..所以有什么解决办法?

披露:我只是一个程序员。 我真的不知道电脑什么。 所以,我不知道关于MySQL,数据库,或插座什么。 我认为这个问题将需要有人谁真正理解电脑来解决。 由于,虽然现在看来很明显,它已经采取了很长的时间来提出这个错误来自缺少插座之中。 人与此错误在网络上99%的人似乎没有这种方式来接近它。

Answer 1:

你有MySQL客户端安装,但不是处理客户端连接MySQL的服务器。 您需要安装MySQL服务器并运行它。



Answer 2:

据我所知,这是任一两件事情:

  1. 你的MySQL服务器未运行,或
  2. 它正在运行,但没有配置为使用/tmp/mysql.sock作为其插座

至于2而言,我认为这是默认设置为新安装的MySQL,但它不伤害检查。 尝试寻找在内容/etc/my.cnf 。 检查是否有一行看起来是这样的: socket=/path/to/socket -其中/path/to/socket是,因为它说插座的文件路径。 如果有这样的条目和文件路径不同于/tmp/mysql.sock ,你发现你的问题。 所以它们匹配或者更改该行,或者你的Django配置。

注意:如果你没有找到/etc/my.cnf ,你可以自己创建,并添加相应的插座设置(即只加行socket=/tmp/mysql.sock )只是为了确保它的正确配置。

至于1而言,可以按照使用的指令在这里 ,并确保你的MySQL服务器正在运行。

祝好运!



Answer 3:

正如我回答在这里 :

mysql_config --socket

我发现这里的mysql插座,我应用它:

'HOST': '/Applications/MAMP/tmp/mysql/mysql.sock',


文章来源: Missing mysql.sock; yielding OperationalError: (2002, “Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)”)