首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缺少mysql.sock;产生OperationalError:(2002,“无法通过套接字'/tmp/mysql.sock‘(2)连接到本地MySQL服务器”)

问缺少mysql.sock;产生OperationalError:(2002,“无法通过套接字'/tmp/mysql.sock‘(2)连接到本地MySQL服务器”)
EN

Stack Overflow用户
提问于 2012-07-12 08:28:04
回答 4查看 6.1K关注 0票数 3

首先,我发誓我已经看过了每一个引用这个错误的问题。几乎每个人提供的解决方案都是不同的,似乎没有人理解导致错误的系统原因。我和许多在网络上遇到这个常见问题的人需要的是对真正出了问题的地方的解释。

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

代码语言:javascript
复制
python manage.py shell
from django.db import connection
cursor = connection.cursor()

对于Django1.4和Python2.7.3,我得到以下错误: OperationalError:(2002,"Can't connect to local MySQL server error socket '/tmp/mysql.sock‘(2)")

我相信我的settings.py文件是正确的。我需要安装的一切都安装好了。下面是settings.py:

代码语言:javascript
复制
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文件。所以,真正的问题是我如何获得一个?答案可能简单得令人尴尬。

当我运行时:

代码语言:javascript
复制
cd /
sudo find . -name ".sock"

我什么都看不到。是的,我已经在我的mac上安装了MySQL5.25。它肯定是安装好的:

代码语言:javascript
复制
sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist
com.mysql.mysqld: Already loaded

但是,运行:

代码语言:javascript
复制
mysql

收益率:

代码语言:javascript
复制
-bash: mysql: command not found

很长一段时间后,我发现了这个bug:http://bugs.mysql.com/bug.php?id=4174 ..那么解决方案是什么呢?

完全公开:我只是个程序员。我真的对计算机一无所知。所以,我对mysql、数据库或套接字一无所知。我想这个问题需要一个真正懂计算机的人来解决。尽管现在看起来很明显,但花了很长时间才将此错误表述为来自丢失的套接字。在网络上有这个错误的人中,99%的人似乎不是这样对待它的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-12 08:36:35

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

票数 4
EN

Stack Overflow用户

发布于 2012-07-12 11:12:35

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

  1. 您的MySQL服务器未在运行,或者
  2. 正在运行,但未配置为使用/tmp/mysql.sock作为其socket

就2而言,我相信这是新安装的MySQL的默认设置,但检查一下也没什么坏处。尝试查看/etc/my.cnf的内容。检查是否有这样一行:socket=/path/to/socket -其中/path/to/socket是,因为它表示套接字的文件路径。如果存在这样的条目,并且文件路径与/tmp/mysql.sock不同,那么您就找到了问题所在。更改这一行,或者更改您的Django配置,使它们匹配。

注意:如果您找不到/etc/my.cnf,您可以自己创建它并添加适当的套接字设置(即只需添加socket=/tmp/mysql.sock行),以确保其配置正确。

就1而言,您可以按照here提供的说明操作,并确保您的MySql服务器正在运行。

祝好运!

票数 5
EN

Stack Overflow用户

发布于 2013-05-06 05:17:28

当我回答here的时候

使用

代码语言:javascript
复制
mysql_config --socket

我发现了mysql套接字的位置,我应用了它:

代码语言:javascript
复制
'HOST': '/Applications/MAMP/tmp/mysql/mysql.sock',
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11443504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档