2013-10-27 4 views
1

그래서 Mysql 5.1 및 PhpMyAdmin 4.0이 설치된 OpenShift에서 장고 빠른 시작을 사용하고 있습니다. 데이터베이스를 설정하고이 오류까지 자습서를 따라했습니다.Python - Django Manage.py Syncdb Failure?

python manage.py syncdb 
Traceback (most recent call last): 
    File "manage.py", line 14, in <module> 
    execute_manager(settings) 
    File "/var/lib/openshift/526c6afd50044654c4000145/python/virtenv/lib/python2.6/site-packages/Django-1.4-py2.6.egg/django/core/management/__init__.py", line 459, in execute_manager 
    utility.execute() 
    File "/var/lib/openshift/526c6afd50044654c4000145/python/virtenv/lib/python2.6/site-packages/Django-1.4-py2.6.egg/django/core/management/__init__.py", line 382, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/var/lib/openshift/526c6afd50044654c4000145/python/virtenv/lib/python2.6/site-packages/Django-1.4-py2.6.egg/django/core/management/base.py", line 196, in run_from_argv 
    self.execute(*args, **options.__dict__) 
    File "/var/lib/openshift/526c6afd50044654c4000145/python/virtenv/lib/python2.6/site-packages/Django-1.4-py2.6.egg/django/core/management/base.py", line 231, in execute 
    self.validate() 
    File "/var/lib/openshift/526c6afd50044654c4000145/python/virtenv/lib/python2.6/site-packages/Django-1.4-py2.6.egg/django/core/management/base.py", line 266, in validate 
    num_errors = get_validation_errors(s, app) 
    File "/var/lib/openshift/526c6afd50044654c4000145/python/virtenv/lib/python2.6/site-packages/Django-1.4-py2.6.egg/django/core/management/validation.py", line 103, in get_validation_errors 
    connection.validation.validate_field(e, opts, f) 
    File "/var/lib/openshift/526c6afd50044654c4000145/python/virtenv/lib/python2.6/site-packages/Django-1.4-py2.6.egg/django/db/backends/mysql/validation.py", line 14, in validate_field 
    db_version = self.connection.get_server_version() 
    File "/var/lib/openshift/526c6afd50044654c4000145/python/virtenv/lib/python2.6/site-packages/Django-1.4-py2.6.egg/django/db/backends/mysql/base.py", line 411, in get_server_version 
    self.cursor() 
    File "/var/lib/openshift/526c6afd50044654c4000145/python/virtenv/lib/python2.6/site-packages/Django-1.4-py2.6.egg/django/db/backends/__init__.py", line 308, in cursor 
    cursor = util.CursorWrapper(self._cursor(), self) 
    File "/var/lib/openshift/526c6afd50044654c4000145/python/virtenv/lib/python2.6/site-packages/Django-1.4-py2.6.egg/django/db/backends/mysql/base.py", line 387, in _cursor 
    self.connection = Database.connect(**kwargs) 
    File "/usr/lib64/python2.6/site-packages/MySQLdb/__init__.py", line 81, in Connect 
    return Connection(*args, **kwargs) 
    File "/usr/lib64/python2.6/site-packages/MySQLdb/connections.py", line 187, in __init__ 
    super(Connection, self).__init__(*args, **kwargs2) 
_mysql_exceptions.OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)") 

누구든지 여기에 무슨 일이 일어나고 있는지 어떤 생각을 가지고 : 나는 "파이썬 manage.py의 syncdb"를 할 때, 다음과 다가와서? 나는 새로운 프로젝트를 만들고 같은 지시를 따르려고했지만 그 결과는 같았다.

+3

당신의 settings.py 파일이 올바른 데이터베이스 설정이 없습니다 : 그 작업을 쉽게 수행하는 방법은 (이 내 응용 프로그램의 settings 모듈)과 같이, OpenShift의 ENV 변수를 사용하는 것입니다 서버 – sdolan

+0

고마워! PhpMyAdmin에서 localhost 호스트를 가진 사용자를 만들었지 만 작동하지 않아서이 호스트의 호스트에서 사용자를 시도하고 ip를 복사했습니다. – user238055

답변

0

정확하게 @ sdolan의 답변 : 실제로 올바른 OpenShift MySQL 매개 변수를 사용해야합니다. 로컬 MySQL을 연결하는

# a setting to determine whether we are running on OpenShift 
ON_OPENSHIFT = False 
if os.environ.has_key('OPENSHIFT_REPO_DIR'): 
    ON_OPENSHIFT = True 

if ON_OPENSHIFT: 
    # os.environ['OPENSHIFT_MYSQL_DB_*'] variables can be used with databases created 
    # with rhc cartridge add (see /README in this git repo) 
    DATABASES = { 
     'default': { 
      'ENGINE': 'django.db.backends.mysql', 
      'NAME':  'myapp',    
      'USER':  os.environ['OPENSHIFT_MYSQL_DB_USERNAME'],  
      'PASSWORD': os.environ['OPENSHIFT_MYSQL_DB_PASSWORD'], 
      'HOST':  os.environ['OPENSHIFT_MYSQL_DB_HOST'],   
      'PORT':  os.environ['OPENSHIFT_MYSQL_DB_PORT'],   
     } 
    } 
else: 
    DATABASES = { 
     'default': { 
      'ENGINE': 'django.db.backends.sqlite3',   
      'NAME':  os.path.join(PROJECT_DIR, 'sqlite3.db'), 
      'USER':  '',          
      'PASSWORD': '',          
      'HOST':  '',          
      'PORT':  '',          
     } 
    } 
+0

처음 몇 줄을 다음과 같이 바꿉니다 :'ON_OPENSHIFT = 'OPENSHIFT_REPO_DIR'in os.environ' –

+1

이것은 Git django-example 저장소에서 왔지만, 물론 옳습니다. – Emmanuel

+0

아, 그건 몰랐어. –

관련 문제