Найти - Пользователи
Полная версия: django+существующая база
Начало » Django » django+существующая база
1
mokynis
как правильно работать с уже существующей базой MySQL?
в setup.py:
 DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'workbase',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}
, потом выполнил
 python manage.py inspectdb > myapp/models.py 
. Ошибок не было, models.py заполнился, вроде, нормально. Теперь пытаюсь выполнить
  python manage.py migrate 
, вываливается куча ошибок, начиная с
?: (mysql.W002) MySQL Strict Mode is not set for database connection ‘default’
HINT: MySQL's Strict Mode fixes many data integrity problems in MySQL, such as data truncation upon insertion, by escalating warnings into errors. It is strongly recommended you activate it. See: https://docs.djangoproject.com/en/3.0/ref/databases/#mysql-sql-mode
и заканчивая этим:
 raise MigrationSchemaMissing("Unable to create the django_migrations table (%s)" % exc)
django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the django_migrations table ((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 '(6) NOT NULL)' at line 1")) 
Как это побороть?
PS настройка базы нормальная, cursor = connection.cursor() работает
PPS может как-то по-другому надо с этой базой работать? Создавать копию базы в Django, как описывают в руководствах-не вариант, там около 80 таблиц и некоторые очень большие.
VadimK
Я бы сначала запустил проект и создал джанговские таблицы с “python manage.py migrate”. Проверить, все ли правильно создается.
Так как судя по всему ошибка изначально на уровне джанги таблиц. Можно включить в mysql логирование и посмотреть какие запросы идут в базу, что бы отловить проблемный запрос.
А далее уже смотреть версию джанги, mysql . Может где что обновить надо.
mokynis
“ Можно включить в mysql логирование и посмотреть какие запросы идут в базу, что бы отловить проблемный запрос. ” (VadimK)
Спасибо, добрый человек! Оказывается, Django пытается создать в MySQL поля типа DATETIME с указанием длины поля (datetime(6) ). В SQLite это проходит, а в MySQL (у меня во всяком случае)-нет. Убрал из запроса длину поля и все пошло.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB