Я пытаюсь подключиться к старому серверу MySQL 3.23 от клиента Ubuntu 16 с помощью UnixODBC и pyodbc 3.07. Я пробовал три (3) версии MySQL Connector/ODBC и два (2) из MariaDB:
MySQL-ODBC 5.3.9 Поддерживает только новый метод аутентификации mysql. Поэтому он не может подключиться.
MySQL-ODBC 5.1.13 Имеет переключатель для метода проверки подлинности, но сообщает мне о pyodbc.connect(dsn)
: [MySQL][ODBC 5.1 Driver]Driver does not support server versions under 4.1.1
MySQL-ODBC 3.51 Имеет две проблемы:
- Сбой с
[MySQL][ODBC 3.51 Driver]Transactions are not enabled (4000) (SQLSetConnnectAttr(SQL_ATTR_AUTOCOMMIT))
, поскольку pyodbc устанавливает autocommit как false по умолчанию. - Дает мне соединение, когда я подключаюсь к
pyodbc.connect(dsn, autocommit=True)
. Соединение дает мне курсор, но все cursor.execute(sql) генерируют исключение('HY000', 'The driver did not supply an error!')
.
Тестирование соединения с isql из оболочки через isql -v [dsn]
дает мне сеанс, но не выполняется при всех операторах с [ISQL]ERROR: Could not SQLExecute
. Так что это проблема unixodbc.
Я установил mysql-client. Но программа mysql не может подключить сервер.
mariadb-client может подключаться к базе данных и даже выполнять инструкции. Это выглядит более перспективным.
Я загрузил файл ODBC-Driver 3.0.2. Использование этого драйвера с isql возвращает ошибку: [S1000][unixODBC][ma-3.0.2]Plugin old_password could not be loaded: lib/mariadb/plugin/old_password.so: cannot open shared object file: No such file or directory
. Это ответ, с которым можно было бы работать. Существует ODBC-Option PLUGIN_DIR, но я не знаю, где получить плагин.
MariaDB ODBC-Driver 2.0.13 дает мне ('HY000', "[HY000] [unixODBC][ma-2.0.13]You have an error in your SQL syntax near 'SQL_AUTO_IS_NULL=0' at line 1 (1064) (SQLDriverConnect)")
при подключении. Поскольку, похоже, нет возможности изменить это. Отложено здесь.
Я хотел бы знать, есть ли способ получить доступ к этому старому MySql через unixodbc/pyodbc?
Или кто-нибудь знает, где взять плагин old_password.so для MariaDB?
Mariadb-клиент, установленный через apt-get, может подключаться, поэтому должен быть способ.