Python 缺少mysql.sock;错误:(2002,“Can';t通过socket';/tmp/MySQL.sock';(2)连接到本地MySQL服务器”

Python 缺少mysql.sock;错误:(2002,“Can';t通过socket';/tmp/MySQL.sock';(2)连接到本地MySQL服务器”,python,mysql,django,sockets,mysql.sock,Python,Mysql,Django,Sockets,Mysql.sock,首先,我发誓我已经看过了每一个提到这个错误的问题。几乎每个人提供的解决方案都是不同的,而且似乎没有人理解错误的系统原因。我,以及许多在网络上遇到这个共同问题的人,需要的是一个关于到底出了什么问题的解释 基本上,当我尝试跑步时: python manage.py shell from django.db import connection cursor = connection.cursor() 在Django 1.4和python 2.7.3中,我得到了以下错误:OperationalErro

首先,我发誓我已经看过了每一个提到这个错误的问题。几乎每个人提供的解决方案都是不同的,而且似乎没有人理解错误的系统原因。我,以及许多在网络上遇到这个共同问题的人,需要的是一个关于到底出了什么问题的解释

基本上,当我尝试跑步时:

python manage.py shell
from django.db import connection
cursor = connection.cursor()
在Django 1.4和python 2.7.3中,我得到了以下错误:OperationalError:(2002,“无法通过socket'/tmp/MySQL.sock'(2)”连接到本地MySQL服务器)

我相信我的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.
}}
经过数周的网络搜索,包括stackoverflow上的每一个答案,我终于得出结论,我遇到的真正问题是,即使安装了mysql,我的计算机上也没有mysql.sock文件。所以,真正的问题是我如何得到一个?答案可能简单得令人尴尬

当我跑步时:

cd /
sudo find . -name ".sock"
我什么也没得到。是的,我已经在MacOSX lion上安装了mysql 5.25。它肯定安装了:

sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist
com.mysql.mysqld: Already loaded
但是,运行:

mysql
收益率:

-bash: mysql: command not found
过了很长时间,我发现了这个错误:。。那么解决方案是什么


充分披露:我只是一个程序员。我真的对电脑一无所知。所以,我对mysql、数据库或套接字一无所知。我认为这个问题需要真正了解计算机的人来解决。虽然现在看起来很明显,但要将此错误表述为来自丢失的套接字,需要很长时间。99%的网络用户似乎没有这样做。

您安装了mysql客户端,但没有安装处理客户端连接的mysql服务器。您需要安装mysql服务器并运行它。

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

  • 您的MySQL服务器没有运行,或者
  • 它正在运行,但未配置为使用
    /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服务器正在运行

    祝你好运

    我回答说:

    我找到了mysql套接字的位置,我应用了它:

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

    您需要将主机更改为“127.0.0.1”
    
    数据库={
    “默认值”:{
    “引擎”:“django.db.backends.mysql”,添加“postgresql”或“postgresql”、“mysql”、“sqlite3”或“oracle”。
    'NAME':'database_NAME.mwb'、#或数据库文件的路径(如果使用sqlite3)。
    'USER':'USER',#不与sqlite3一起使用。
    “PASSWORD”:“PASS”,不与sqlite3一起使用。
    'HOST':'127.0.0.1',#设置为本地主机的空字符串。不与sqlite3一起使用。
    “端口”:“”,默认设置为空字符串。不与sqlite3一起使用。
    
    }}

    指定的连接类型在哪里?MySQL可以通过文件套接字或通过端口接受连接的套接字进行连接。我不使用Django,所以我不能帮你更多,但我会寻找控制Django连接到哪个数据库的设置,并更改URI。啊,我只是编辑了设置文件。你怎么认为?它们看起来不对吗?嗯,
    “主机”:“/tmp/mysql.sock”
    不起作用。您需要提供类似于
    mysql://{username}:{password}@{host}/{database}
    的内容。由于我不使用Django,我不知道Django需要什么格式。你确定这是它不起作用的原因吗?以下是您正在谈论的内容:mysql://user:pass@/tmp/mysql.sock/what__my_fredge.mwb?,我也遇到了同样的问题。我刚才解决了。为什么在任何安装说明中都没有提到这一点?所以,我需要安装“mysql服务器”?需要其他信息吗?这是文件的正确链接吗?因为我已经安装了,你在mac上,对吗?使用brew。获取它,然后使用它安装mysql。应该可以完美工作:)Brew不是python应用程序。按照这里的说明操作:谢谢你的回答!所以,最初我有一个空白的my.cnf或者根本没有(不记得了)。所以我像你说的那样编辑了这个文件,使用了以下内容:
    [client]socket=/tmp/mysql.sock
    [mysqld]socket=/tmp/mysql.sock
    至于#1,我肯定浏览了你链接到的安装程序。好几次。不知道我还能做些什么来安装它,一个.dmg是非常简单的。没有实际的“mysql.sock”文件有关系吗?而且,mysql中的所有文件夹树元素肯定都在那里,正如自述文件所说的那样(/usr/local/mysqlHmmm,我不太确定。也许你可以尝试使用IP而不是套接字。以防万一,尝试127.0.0.1作为主机,3306作为端口,这是新安装的mysql的默认设置。好的,我会试试这个,让你知道它是如何运行的。谢谢。这不是说你使用了那个密码,只是说你使用了一个密码。你设置了使用密码吗
    'HOST': '/Applications/MAMP/tmp/mysql/mysql.sock',