【问题标题】:syncdb command not working properllysyncdb 命令无法正常工作
【发布时间】:2013-12-10 13:47:43
【问题描述】:

我正在尝试运行现有项目。我已恢复我的数据库并安装了所有必需的依赖项。在运行 syncdb 时,我收到以下错误。

[root@localhost ]# python manage.py syncdb
Traceback (most recent call last):
  File "manage.py", line 11, in <module>
    execute_manager(settings)
  File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 459, in execute_manager
    utility.execute()
  File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python2.7/site-packages/django/core/management/base.py", line 196, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/usr/local/lib/python2.7/site-packages/django/core/management/base.py", line 231, in execute
    self.validate()
  File "/usr/local/lib/python2.7/site-packages/django/core/management/base.py", line 266, in validate
    num_errors = get_validation_errors(s, app)
  File "/usr/local/lib/python2.7/site-packages/django/core/management/validation.py", line 103, in get_validation_errors
    connection.validation.validate_field(e, opts, f)
  File "/usr/local/lib/python2.7/site-packages/django/db/backends/mysql/validation.py", line 14, in validate_field
    db_version = self.connection.get_server_version()
  File "/usr/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 415, in get_server_version
    self.cursor().close()
  File "/usr/local/lib/python2.7/site-packages/debug_toolbar/utils/tracking/__init__.py", line 9, in wrapped
    return callback(original, *args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/debug_toolbar/panels/sql.py", line 21, in cursor
    result = original(self)
  File "/usr/local/lib/python2.7/site-packages/django/db/backends/__init__.py", line 306, in cursor
    cursor = self.make_debug_cursor(self._cursor())
  File "/usr/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 387, in _cursor
    self.connection = Database.connect(**kwargs)
  File "/usr/local/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-linux-i686.egg/MySQLdb/__init__.py", line 81, in Connect
    return Connection(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-linux-i686.egg/MySQLdb/connections.py", line 215, in __init__
    self.set_character_set(charset)
  File "/usr/local/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-linux-i686.egg/MySQLdb/connections.py", line 294, in set_character_set
    super(Connection, self).set_character_set(charset)
_mysql_exceptions.ProgrammingError: (2014, "Commands out of sync; you can't run this command now")

【问题讨论】:

  • 我能找到解决这个问题的办法吗

标签: python django python-2.7 python-3.x django-models


【解决方案1】:

你是在复合sql语句吗?

例如:cursor.execute('show databases; show tables;')?

如果是这样,请尝试将它们分开:

cursor.execute('') 游标关闭 重新连接 重复

【讨论】:

  • 我应该在哪里检查这个,无论是在我的应用程序的 models.py 还是在 cursors.py 中
  • 你能解释一下在哪里进行更改。
【解决方案2】:

正如@Kalinakov 所说,此错误是由于您的代码中对游标的使用不当造成的。请在您的代码中搜索 cursor.execute 并开始调试。

另请参阅下面的帖子,其中提到了为什么会出现此类错误以及解决方案是什么 - Ways to avoid MySQLdb's "Commands out of sync; you can't run this command now" (2014) exception

【讨论】:

    【解决方案3】:

    让我们开始一个小小的调试之旅:

    • 1) 您的数据库配置正确吗? 让我们在没有 mySQL 数据库和 SQlite 的情况下尝试一下。如果您没有任何编程错误 - SQLite 将直接启动并同步您的数据库。为此,您需要前往您的 settings.py 并将您的数据库重新配置为如下所示:

      DATABASES = {
      'default': {
      'ENGINE': 'django.db.backends.sqlite3', 
      'NAME': 'database.db',                      
      
      'USER': '',
      'PASSWORD': '',
      'HOST': '',                     
      'PORT': '',                     
      

      } }

    • 2) 现在,运行syncdb 看看它是否有效。如果它现在可以工作,您可能需要重新配置您的数据库:namepasswordhostport。如果 SQlite 不起作用 - 请返回此处并告诉我们确切的错误消息。

    【讨论】:

      猜你喜欢
      • 2012-09-22
      • 1970-01-01
      • 2015-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多