Django inspectdb из старой версии MySQl 4.0

214
04 июня 2018, 01:00

Исходные данные: - Версия старого сервера MySQL 4.0.12-nt. - django.VERSION (2, 0, 5, 'final', 0)

Хочу получить модель из старой базы MySQL, использую команду:

python manage.py inspectdb --database=my_datab

Консольный вывод следующий:

Traceback (most recent call last):
  File "manage.py", line 15, in <module>
    execute_from_command_line(sys.argv)
  File "/mnt/LinuxShare/ll_env/lib/python3.5/site-packages/django/core/management/__init__.py", line 371, in execute_from_command_line
    utility.execute()
  File "/mnt/LinuxShare/ll_env/lib/python3.5/site-packages/django/core/management/__init__.py", line 365, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/mnt/LinuxShare/ll_env/lib/python3.5/site-packages/django/core/management/base.py", line 288, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/mnt/LinuxShare/ll_env/lib/python3.5/site-packages/django/core/management/base.py", line 335, in execute
    output = self.handle(*args, **options)
  File "/mnt/LinuxShare/ll_env/lib/python3.5/site-packages/django/core/management/commands/inspectdb.py", line 28, in handle
    for line in self.handle_inspection(options):
  File "/mnt/LinuxShare/ll_env/lib/python3.5/site-packages/django/core/management/commands/inspectdb.py", line 44, in handle_inspection
    with connection.cursor() as cursor:
  File "/mnt/LinuxShare/ll_env/lib/python3.5/site-packages/django/db/backends/base/base.py", line 255, in cursor
    return self._cursor()
  File "/mnt/LinuxShare/ll_env/lib/python3.5/site-packages/django/db/backends/base/base.py", line 232, in _cursor
    self.ensure_connection()
  File "/mnt/LinuxShare/ll_env/lib/python3.5/site-packages/django/db/backends/base/base.py", line 216, in ensure_connection
    self.connect()
  File "/mnt/LinuxShare/ll_env/lib/python3.5/site-packages/django/db/utils.py", line 89, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/mnt/LinuxShare/ll_env/lib/python3.5/site-packages/django/db/backends/base/base.py", line 216, in ensure_connection
    self.connect()
  File "/mnt/LinuxShare/ll_env/lib/python3.5/site-packages/django/db/backends/base/base.py", line 194, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/mnt/LinuxShare/ll_env/lib/python3.5/site-packages/django/db/backends/mysql/base.py", line 236, in get_new_connection
    return Database.connect(**conn_params)
  File "/mnt/LinuxShare/ll_env/lib/python3.5/site-packages/MySQLdb/__init__.py", line 86, in Connect
    return Connection(*args, **kwargs)
  File "/mnt/LinuxShare/ll_env/lib/python3.5/site-packages/MySQLdb/connections.py", line 204, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
django.db.utils.OperationalError: (2027, 'Malformed packet')

Как показал "гуглеж" проблемы с версией MySQL. К базе так-же не удается подключиться MySQL Workbench 8.0, что наверное, в данном случае вполне естественно.

Была попытка сделать так:

import mysql.connector
cnx = mysql.connector.connect(user='scott', password='password',
                              host='127.0.0.1',
                              database='employees')
cnx.close()

Ошибка повторилась:

(2027, 'Malformed packet')

Но использовав MySQL-Front 6.0 к базе все-же удалось подключиться и посмотреть структуру таблиц и т.д.

Были предположения по поводу того, что в старой версии используются разные длины хеша паролей. Увеличивал до VarChar колонки до 40, вставлял известный хеш от пароля, успехом не увенчалось.

Наверное можно в данной ситуации использовать "Driver={MySQL ODBC 3.51 Driver}; Server=172.16.0.31; Port=3306; DataBase=my_datab; UID=user; PWD=password" с использованием ADODB.Connection, и это работает. Только само решение использование COM объектов ужасно.

Возможности обновить сервер до более новой версии нет.

Может будут какие-то еще версии того, как это можно победить ? Или уже кто-то сталкивался со старыми версиями MySQL и знает как этому помочь взлететь ?

READ ALSO
yii2 Как сформировать запрос?

yii2 Как сформировать запрос?

Есть рабочий запрос:

235
Удаление ?page= из адресной строки

Удаление ?page= из адресной строки

Есть ссылка вида: хост/?page=mainЧто прописать в

209
Слишком долгая инициализация multi curl

Слишком долгая инициализация multi curl

На вход обработки multi curl подаю массив из ссылок, файлы по которым весят в среднем 300-500кбНо проблема в том что,например, при сотне ссылок курл...

219
Скачивание файла средством apigility + dompdf

Скачивание файла средством apigility + dompdf

Всем привет! Пишу api, задача выдать файл pdf на скачиваниеФайл скачивается, но в конец дописывается текст: © Copyright 2013 - 2018 by Zend Technologies Ltd

199