简体   繁体   English

Python-Django Manage.py Syncdb失败?

[英]Python - Django Manage.py Syncdb Failure?

So, I am using a django quickstart on OpenShift, with Mysql 5.1 and PhpMyAdmin 4.0 installed. 因此,我在OpenShift上使用django快速入门,并安装了Mysql 5.1和PhpMyAdmin 4.0。 I have setup a database and have followed a tutorial up to this error. 我已经建立了一个数据库,并按照教程进行了此错误。 When I do "python manage.py syncdb", the following comes up: 当我执行“ python 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)")

Anyone have any idea what's going on here? 有人知道这是怎么回事吗? I tried creating a new project and following the same instructions, but the results were the same. 我尝试创建一个新项目并按照相同的说明进行操作,但是结果是相同的。

Just to precise @sdolan's answer: indeed you have to use correct OpenShift MySQL parametes. 只是为了准确地回答@sdolan:实际上,您必须使用正确的OpenShift MySQL参数。 An easy way to do that is to use OpenShift env variables, like this (this is my app's settings module): 一种简单的方法是使用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':     '',                                     
        }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM