Исходные данные: - Версия старого сервера 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 и знает как этому помочь взлететь ?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
На вход обработки multi curl подаю массив из ссылок, файлы по которым весят в среднем 300-500кбНо проблема в том что,например, при сотне ссылок курл...
Всем привет! Пишу api, задача выдать файл pdf на скачиваниеФайл скачивается, но в конец дописывается текст: © Copyright 2013 - 2018 by Zend Technologies Ltd