DjangoはUbuntu 10.04を介してMySQLデータベースに接続できません。

DjangoはUbuntu 10.04を介してMySQLデータベースに接続できません。

私のローカルホストで実行したい単純なDjango 1.3。*プロジェクトがあります。 python-mysqldb、rptzなどの必要なすべてのモジュールをインストールしました。 Ubuntu 10.04とPython 2.7.2をインストールしました。端末でプロジェクトを開始しようとすると

thor@thor:/media/SAJAT - Projects/project/simple project$ python manage.py runserver

次のエラーメッセージが表示されます。

> Validating models...

Unhandled exception in thread started by <bound method Command.inner_run of <django.core.management.commands.runserver.Command object at 0x1224910>>
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/django/core/management/commands/runserver.py", line 88, in inner_run
    self.validate(display_num_errors=True)
  File "/usr/lib/python2.7/dist-packages/django/core/management/base.py", line 249, in validate
    num_errors = get_validation_errors(s, app)
  File "/usr/lib/python2.7/dist-packages/django/core/management/validation.py", line 102, in get_validation_errors
    connection.validation.validate_field(e, opts, f)
  File "/usr/lib/python2.7/dist-packages/django/db/backends/mysql/validation.py", line 14, in validate_field
    db_version = self.connection.get_server_version()
  File "/usr/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 338, in get_server_version
    self.cursor()
  File "/usr/lib/python2.7/dist-packages/django/db/backends/__init__.py", line 250, in cursor
    cursor = self.make_debug_cursor(self._cursor())
  File "/usr/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 322, in _cursor
    self.connection = Database.connect(**kwargs)
  File "/usr/lib/python2.7/dist-packages/MySQLdb/__init__.py", line 81, in Connect
    return Connection(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 187, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (2003, "Can't connect to MySQL server on '172.17.30.101' (110)")

私のコンピュータ(localhost)にmysqlサーバーがすでにインストールされているので、このIPアドレス172.17.30.101 '(110)がどこから来たのかわかりません。

これは私のsettings.pyファイルです。

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
            'NAME': 'dbname',                      # Or path to database file if using sqlite3.
            'USER': 'dbuser',                      # Not used with sqlite3.
            'PASSWORD': '123456',                  # Not used with sqlite3.
            'HOST': '127.0.0.1',                      # Set to empty string for localhost. Not used with sqlite3.
            'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
 #'PORT': '3306', i tried with this too                      # Set to empty string for default. Not used with sqlite3.
 #'PORT': '3360', i tried with this too                      # Set to empty string for default. Not used with sqlite3.
        },
        # 'read': {
        #     'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        #     'NAME': 'newsonia',                      # Or path to database file if using sqlite3.
        #     'USER': 'dbuser',                      # Not used with sqlite3.
        #     'PASSWORD': 'dbname',                  # Not used with sqlite3.
        #     'HOST': '127.0.0.1',                      # Set to empty string for localhost. Not used with sqlite3.
        #     'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
        # }
    }

これらのエラーをどのように解決するのかわかりません。

答え1

まず第一に、Django 1.3は1.5が2013年2月にリリースされてから1年以上サポートされていません。あなたはそれについて考える必要があります危険公に公開してください。 Ubuntu 10.04サーバーも1年以内にこの状態に達する予定です。したがって、実際の質問に加えて、インフラストラクチャのアップグレードも考慮する必要があります。

あなたのサイトは標準のPOP3ポート(正規のパブリックIPではない)にあるランダムに予約されたポートに接続しています。予期せずこのようなことが起こる状況はありません。設定に何かがあります~につながるこのようなことが起こります。

私のお金はあなたの設定にあります。それはDATABASESあなたが気づかなかった別の定義のようなものです。ビューのいずれかに以下を追加して確認します。

from django.conf import settings
print settings['DATABASES']

反対側で何が起こるか見てください。そこで問題を見つけることができます。

失敗した場合

  • 以前の設定を確認してDATABASE_*も同様の方法を妨げることはありません。
  • MySQLモジュールコードを介して接続を追跡します。トレースで何が起こっているかを確認できます。接続が形成されるポイントに達するまでこの情報を追跡します(必要に応じて印刷ステートメントを挿入します)。

関連情報