3

まず、このエラーを参照するすべての質問を確認したことを誓います。誰かが提供するほぼすべての解決策は異なり、エラーの体系的な理由を誰も理解していないようです。私、そしてこの一般的な問題に遭遇するWeb上の多くの人々が必要としているのは、実際に何が間違っているのかを説明することです。

基本的に、私が実行しようとすると:

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

Django1.4とpython2.7.3では、次のエラーが発生します:OperationalError:(2002、"ソケット'/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.
}}

何週間にもわたってWebを精査し、stackoverflowのすべてを含めて答えを探した後、私が経験している本当の問題は、mysqlがインストールされていても、コンピューターにmysql.sockファイルがないことであるという結論に達しました。だから、本当の問題はどうやってそれを手に入れるのかということです。答えは恥ずかしいほど単純かもしれません。

私が走るとき:

cd /
sudo find . -name ".sock"

何も得られません。そして、はい、私は私のmacosxlionにmysql5.25をインストールしました。それは間違いなくインストールされています:

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

ただし、実行中:

mysql

収量:

-bash: mysql: command not found

久しぶりに、このバグを見つけました:http: //bugs.mysql.com/bug.php ?id=4174 ..それで、解決策は何ですか?

完全な開示:私はただのプログラマーです。私は本当にコンピューターについて何も知りません。だから、私はmysql、データベース、またはソケットについて何も知りません。この質問には、コンピューターを本当に理解している人が修正する必要があると思います。今では明らかなようですが、このエラーをソケットの欠落によるものとして定式化するのに長い時間がかかりました。このエラーのあるWeb上の99%の人は、この方法でそれに近づいていないようです。

4

3 に答える 3

5

私の知る限り、それは次の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サーバーが実行されていることを確認できます。

幸運を!

于 2012-07-12T03:12:35.477 に答える
4

mysqlクライアントはインストールされていますが、クライアントの接続を処理するmysql-serverはインストールされていません。mysqlサーバーをインストールして実行する必要があります。

于 2012-07-12T00:36:34.970 に答える
4

私がここで答えたように:

mysql_config --socket

私はmysqlソケットがどこにあるかを見つけました、私はそれを適用します:

'HOST': '/Applications/MAMP/tmp/mysql/mysql.sock',
于 2013-05-05T21:17:27.877 に答える