Форум сайта python.su
как правильно работать с уже существующей базой 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
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"))
Отредактировано mokynis (Авг. 4, 2020 11:29:44)
Офлайн
Я бы сначала запустил проект и создал джанговские таблицы с “python manage.py migrate”. Проверить, все ли правильно создается.
Так как судя по всему ошибка изначально на уровне джанги таблиц. Можно включить в mysql логирование и посмотреть какие запросы идут в базу, что бы отловить проблемный запрос.
А далее уже смотреть версию джанги, mysql . Может где что обновить надо.
Офлайн
“ Можно включить в mysql логирование и посмотреть какие запросы идут в базу, что бы отловить проблемный запрос. ” (VadimK)
Спасибо, добрый человек! Оказывается, Django пытается создать в MySQL поля типа DATETIME с указанием длины поля (datetime(6) ). В SQLite это проходит, а в MySQL (у меня во всяком случае)-нет. Убрал из запроса длину поля и все пошло.
Офлайн