2013-10-27 120 views
1

所以,我使用OpenShift Django的快速启动,与MySQL 5.1和phpMyAdmin安装4.0。我已经建立了一个数据库,并且遵循了一个教程来解决这个错误。当我做“蟒蛇manage.py执行syncdb”,以下出现:的Python - Django的Manage.py执行syncdb失败?

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)") 

任何人有任何想法是怎么回事?我试图创建一个新的项目,并按照相同的指示,但结果是一样的。

+3

你的settings.py文件没有正确DATABASES设置您连接到您的本地MySQL服务器 – sdolan

+0

谢谢!在phpMyAdmin,我创建了一个用户与本地主机的主机,没有工作,所以我尝试了用户与此主机的主机,以及复制的IP,它的工作! – user238055

回答

0

只是为了精确@ sdolan的答案:确实,你必须使用正确的OpenShift的MySQL指标的影响。一个简单的方法来做到这一点是使用OpenShift ENV变量,像这样的(这是我的应用程序的settings模块):

# 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

将前几行替换为:os.environ中的ON_OPENSHIFT ='OPENSHIFT_REPO_DIR' –

+1

这来自Git django示例存储库,但您当然是对的。 – Emmanuel

+0

啊,不知道。 –

相关问题