2015-08-31 4 views
0

Я прошел через вводный учебник для Django, успешно использующего SQLite в соответствии с инструкциями. Однако для моего реального проекта я хочу использовать MySQL, поэтому я удалил файлы проекта учебника и начал новую настройку. Беда в том, что, когда я бегу «питон manage.py мигрировать» Я получаю следующую ошибку: MySQLПолучение ошибки SQL при запуске «python manage.py migrate» с использованием базы данных MySQL

_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%s' at line 1").

У меня есть следующие в разделе Параметры сайта базы данных:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'vocabulator$database', 
     'USER': 'vocabulator', 
     'PASSWORD': '<password>', 
     'HOST': 'mysql.server', 
    } 
} 

Я подключен к этому база данных успешно используется в Bash, 'mysql --user = vocabulator --host = mysql.server --password = <password> "vocabulator \ $ database"', поэтому, похоже, я правильно ввел данные настройки.

Я также выполнил инструкцию по настройке привязки базы данных для Python 3, которая также оказалась успешной. Это было либо на страницах документации Django, либо на эквиваленте PythonAnywhere, но, к сожалению, я больше не могу найти ссылку на страницу.

Я еще не написал никаких MySQL-запросов, поэтому любые неправильные, которые выполняются, должны поступать с manage.py, так что может быть причиной? Полная трассировка ошибки указана ниже:

Operations to perform: Synchronize unmigrated apps: staticfiles, messages Apply all migrations: contenttypes, sessions, admin, auth Synchronizing apps without migrations: Creating tables... 
    Running deferred SQL... Installing custom SQL... Running migrations: Rendering model states... DONE Applying contenttypes.0001_initial...Traceback (most recent call last): File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/django/db/backends/mysql/base.py", line 124, in execute 
    return self.cursor.execute(query, args) File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/MySQLdb/cursors.py", line 184, in execute 
    self.errorhandler(self, exc, value) File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/MySQLdb/connections.py", line 37, in defaulterrorhandler 
    raise errorvalue File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/MySQLdb/cursors.py", line 171, in execute 
    r = self._query(query) File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/MySQLdb/cursors.py", line 330, in _query 
    rowcount = self._do_query(q) File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/MySQLdb/cursors.py", line 294, in _do_query 
    db.query(q) 
_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%s' at line 1") 

The above exception was the direct cause of the following exception: 

Traceback (most recent call last): File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line 
    utility.execute() File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/django/core/management/__init__.py", line 330, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/django/core/management/base.py", line 393, in run_from_argv 
    self.execute(*args, **cmd_options) File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/django/core/management/base.py", line 444, in execute 
    output = self.handle(*args, **options) File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/django/core/management/commands/migrate.py", line 222, in handle 
    executor.migrate(targets, plan, fake=fake, fake_initial=fake_initial) File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/django/db/migrations/executor.py", line 110, in migrate 
    self.apply_migration(states[migration], migration, fake=fake, fake_initial=fake_initial) File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/django/db/migrations/executor.py", line 148, in apply_migration 
    state = migration.apply(state, schema_editor) File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/django/db/migrations/migration.py", line 115, in apply 
    operation.database_forwards(self.app_label, schema_editor, old_state, project_state) File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/django/db/migrations/operations/models.py", line 59, in database_forwards 
    schema_editor.create_model(model) File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/django/db/backends/base/schema.py", line 289, in create_model 
    self.deferred_sql.extend(self._model_indexes_sql(model)) File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/django/db/backends/mysql/schema.py", line 55, in _model_indexes_sql 
    self.connection.cursor(), model._meta.db_table File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/django/db/backends/mysql/introspection.py", line 142, in get_storage_engine 
    "WHERE table_name = %s", [table_name]) File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/django/db/backends/utils.py", line 79, in execute 
    return super(CursorDebugWrapper, self).execute(sql, params) File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/django/db/utils.py", line 97, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/django/utils/six.py", line 658, in reraise 
    raise value.with_traceback(tb) File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/django/db/backends/mysql/base.py", line 124, in execute 
    return self.cursor.execute(query, args) File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/MySQLdb/cursors.py", line 184, in execute 
    self.errorhandler(self, exc, value) File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/MySQLdb/connections.py", line 37, in defaulterrorhandler 
    raise errorvalue File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/MySQLdb/cursors.py", line 171, in execute 
    r = self._query(query) File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/MySQLdb/cursors.py", line 330, in _query 
    rowcount = self._do_query(q) File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-packages/MySQLdb/cursors.py", line 294, in _do_query 
    db.query(q) django.db.utils.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server v ersion for the right syntax to use near '%s' at line 1") Exception ignored in: <bound method Cursor.__del__ of <MySQLdb.curso rs.Cursor object at 0x7feec394b940>> Traceback (most recent call last): File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-p ackages/MySQLdb/cursors.py", line 67, in __del__ File "/home/vocabulator/.virtualenvs/django18/lib/python3.4/site-p ackages/MySQLdb/cursors.py", line 73, in close ReferenceError: weakly-referenced object no longer exists (django18)03:29 ~/mysite $ mysql --user=vocabulator --host=mysql.server --p mysql: ambiguous option '--p' (pager, plugin_dir) 
+1

У вас есть '--password =" vocabulator \ $ database "'', но в настройках django это имя db? –

+0

Я использовал < and > символы, которые были интерпретированы как тег HTML, который создал опечатку в моем сообщении. Я исправил это сейчас. Как вы сказали, последняя часть - это имя БД. Я, очевидно, не цитировал фактический пароль в своем сообщении. –

+0

Какой драйвер MySQL вы используете? –

ответ

1

Как я уже говорил в моем комментарии выше, я нашел страницу, которая проинструктировала меня о том, как установить драйвера. Именно это одна:

https://www.pythonanywhere.com/wiki/UsingMySQL

Однако эта вики страница немного датированный сейчас, и поручил мне установить MySQL Connector версии 2.0.1. Текущая версия теперь 2.0.4. Старая версия была ошибка, что означало, что не будет работать с Django 1.8, как указано здесь:

http://bugs.mysql.com/bug.php?id=76752

По версии 2.0.4 эта ошибка, как представляется, были исправлены.

Линия на странице PythonAnywhere Wiki, указанным выше должен измениться:

pip3.4 установить https://dev.mysql.com/get/Downloads/Connector-Python/mysql-connector-python-2.0.4.tar.gz

После того, как я побежал это, миграция, как представляется, успешно работал на моей установке Django.

+0

PythonAnywhere dev здесь: спасибо за хедз-ап! Мы установили страницу справки. –

+0

@Terry Rozmus Я столкнулся с такой же ошибкой с python 3.4 django 1.8 windows 8 mysql database. Я много пробовал. Также установлен mysql-connector-python-2.1.3.tar.gz. Пожалуйста, помогите – user3282758

+0

Трудно понять, с какими проблемами вы столкнулись, если не публикуете ошибки, которые вы получаете. Кроме того, я начинаю Django. Я очень хорошо разбираюсь в проблемах, но вам, вероятно, нужна помощь кого-то более опытного. Я предлагаю вам разместить ваш запрос в качестве нового вопроса stackoverflow вместе с подробным описанием ваших ошибок и тем, что вы попробовали, чтобы получить эту помощь. –

 Смежные вопросы

  • Нет связанных вопросов^_^