Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 3, 2020 14:23:17

mokynis
Зарегистрирован: 2020-06-09
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

django+существующая база

как правильно работать с уже существующей базой 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 таблиц и некоторые очень большие.

Отредактировано mokynis (Авг. 4, 2020 11:29:44)

Офлайн

#2 Авг. 4, 2020 22:43:43

VadimK
Зарегистрирован: 2013-07-03
Сообщения: 199
Репутация: +  16  -
Профиль   Отправить e-mail  

django+существующая база

Я бы сначала запустил проект и создал джанговские таблицы с “python manage.py migrate”. Проверить, все ли правильно создается.
Так как судя по всему ошибка изначально на уровне джанги таблиц. Можно включить в mysql логирование и посмотреть какие запросы идут в базу, что бы отловить проблемный запрос.
А далее уже смотреть версию джанги, mysql . Может где что обновить надо.

Офлайн

#3 Авг. 5, 2020 13:59:30

mokynis
Зарегистрирован: 2020-06-09
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

django+существующая база

“ Можно включить в mysql логирование и посмотреть какие запросы идут в базу, что бы отловить проблемный запрос. ” (VadimK)
Спасибо, добрый человек! Оказывается, Django пытается создать в MySQL поля типа DATETIME с указанием длины поля (datetime(6) ). В SQLite это проходит, а в MySQL (у меня во всяком случае)-нет. Убрал из запроса длину поля и все пошло.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version