Django는 우분투 10.04를 통해 MySQL 데이터베이스에 연결할 수 없습니다.

Django는 우분투 10.04를 통해 MySQL 데이터베이스에 연결할 수 없습니다.

내 로컬 호스트에서 실행하려는 간단한 Django 1.3.* 프로젝트가 있습니다. python-mysqldb, rptz 등과 같은 필요한 모든 모듈을 설치했습니다. 우분투 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 모듈 코드를 통해 연결을 추적합니다. 추적에서 무슨 일이 일어나고 있는지 확인할 수 있습니다. 연결이 형성되는 지점에 도달할 때까지 이 정보를 추적합니다(필요한 경우 인쇄 문 삽입).

관련 정보