首先,我发誓我已经查看了引用此错误的每一个问题。几乎每个人提供的解决方案都是不同的,而且似乎没有人理解错误的系统性原因。我和网络上许多遇到这个常见问题的人需要的是对实际问题的解释。
基本上,当我尝试运行时:
python manage.py shell
from django.db import connection
cursor = connection.cursor()
使用 Django 1.4 和 python 2.7.3,我收到以下错误: OperationalError: (2002, "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (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.
}}
在经历了数周的网络搜索(包括 stackoverflow 上的每个问题)之后,我得出的结论是,我遇到的真正问题是我的计算机上没有 mysql.sock 文件,即使安装了 mysql。所以,真正的问题是我如何得到一个?答案可能简单得令人尴尬。
当我运行时:
cd /
sudo find . -name ".sock"
我什么也得不到。是的,我已经在我的 mac osx 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
找了半天,发现了这个bug:http ://bugs.mysql.com/bug.php?id=4174 ..那有什么办法呢??
完全披露:我只是一个程序员。我真的对电脑一窍不通。所以,我对mysql、数据库或套接字一无所知。我认为这个问题需要真正懂电脑的人来解决。虽然现在看起来很明显,但将这个错误表述为来自丢失的套接字需要很长时间。网络上 99% 出现此错误的人似乎并没有以这种方式处理它。