Появление AV, если в подключении есть настройки для другой базы

Обсуждение возникших проблем, предложений и ошибок UniDAC компонентов
Закрыто
JayDi
Сообщения: 61
Зарегистрирован: Пт 28 ноя 2008 18:29
Откуда: Россия, г.Сызрань
Контактная информация:

Появление AV, если в подключении есть настройки для другой базы

Сообщение JayDi » Вс 19 июл 2015 19:05

Версия UniDAC 6.1.5

Если в настройках подключения (TUniConnection) находятся специфичные опции из разных баз данных, то ваш код пытается применить их все, даже те из них, которые являются мусорными и относятся к другому типу базы. В результате появляется Access Violation, т.к. соответствующие юниты с провайдерами не были добавлены за ненадобностью.

Код: Выделить всё

Error reading UniConnection.SpecificOptions.Strings: MySQL provider is not registered. You should add the MySQLUniProvider unit to the uses clause of any unit in your project or place the TMySQLUniProvider component on the form.

Код: Выделить всё

MySQL provider is not registered. You should add the MySQLUniProvider unit to the uses clause of any unit in your project or place the TMySQLUniProvider component on the form.
Пример:

Подключение использует SQLite базу данных, но в самом компоненте когда-то был MySQL и часть настроек с тех времен сохранилось:

Код: Выделить всё

    SpecificOptions.Strings = (
      'MySQL.UseUnicode=True'
      'MySQL.ConnectionTimeout=500'
      'SQLite.UseUnicode=True'
      'SQLite.BusyTimeout=10000')
В результате при запуске приложения компоненты читают эти настройки и пытаются применить к MySQL, который на самом деле даже не используется, вызывая тем самым AV.

Приходится вручную из dfm-файла удалять "мусорные" настройки, чтобы заработало.

MaximG
Devart Team
Сообщения: 114
Зарегистрирован: Пн 06 июл 2015 12:51

Re: Появление AV, если в подключении есть настройки для другой базы

Сообщение MaximG » Пн 20 июл 2015 08:16

Получаемое Вами сообщение о возникновении Exception является стандартным сообщением UniDAC. Для использования UniDAC при работе с MySQL необходимо подключение MySQLUniProvider в разделе USES. Если же в приложении работа с MySQL больше не нужна и MySQLUniProvider не подключен, удалите специфические опции, связанные с работой MySQL из dfm-файла

Закрыто