к оглавлению

Программы, работающие с MyODBC

Большинство программ должны работать с MyODBC, но для каждой из тех, что перечислены ниже, это было проверено.

Если Вы используете Access 2000, Вы должны получить и установить самый новый (version 2.6 или выше) компонент Microsoft MDAC (Microsoft Data Access Components) с адреса http://www.microsoft.com/data. Это устранит следующую ошибку в Access: когда Вы экспортируете данные в MySQL, таблица и названия столбцов не определены. Другой способ обхода этой ошибки в том, чтобы обновить MyODBC до Version 2.50.33 и MySQL до Version 3.23.x, они вместе обеспечивают обход для этой проблемы! Вы должны также получить и применить Microsoft Jet 4.0 Service Pack 5 (SP5), который можно найти на http://support.microsoft.com/support/kb/articles/Q%20239/1/14.ASP. Это устранит некоторые случаи, где столбцы отмечены как #deleted# в пакете Access. Обратите внимание, что, если Вы используете MySQL Version 3.22, Вы должны применить заплату MDAC и использовать MyODBC 2.50.32 или 2.50.34.

  • Установите поле опции MyODBC ``Return matching rows'' при соединении с сервером MySQL.
  • Вы должны иметь первичный ключ в таблице. Если его там нет, новые или модифицируемые строки могут быть показаны как #Deleted#.
  • Вы должны иметь timestamp во всех таблицах, которые Вы хотите модифицировать. Для максимальной мобильности рекомендуются TIMESTAMP(14) или простой TIMESTAMP вместо других вариантов на тему TIMESTAMP(X).
  • Используйте поля типа double float. Access терпит неудачу при сравнении с single float. Симптомы: новые или модифицируемые строки могут помечаться как #Deleted#, или Вы не можете находить строки модификаций.
  • Если Вы все еще получаете ошибку Another user has changed your data после добавления столбца TIMESTAMP, следующий прием может помочь Вам: Не используйте просмотр листа данных table. Создайте взамен форму с полями, которые Вы хотите обрабатывать, и используйте эту форму для просмотра в формате form. Вы должны установить реквизит DefaultValue для столбца TIMESTAMP в значение NOW(). Неплохо скрыть столбец TIMESTAMP, чтобы не запутывать Ваших пользователей.
  • Access под NT покажет BLOB-столбцы как OLE OBJECTS. Если Вы хотите взамен иметь столбцы MEMO, Вы должны изменить столбец на TEXT через ALTER TABLE.
  • Access не может всегда правильно обрабатывать столбцы DATE. Если Вы имеете проблему с этим, измените столбцы на DATETIME.
  • В некоторых случаях Access может генерировать запрещенные запросы SQL, которые MySQL не может понимать. Вы можете исправить это выбором "Query|SQLSpecific|Pass-Through" из меню Access.
  • Если Вы имеете в Access столбец, определенный как BYTE, Access попробует экспортировать его как TINYINT вместо TINYINT UNSIGNED. Это задаст Вам проблем, если Вы имеете значения > 127!
  • Если Вы используете Access 7.0, Вы должны использовать флажок Return matching rows.
  • Если Вы используете Access 2.0, Вы должны использовать флажки Return matching rows и Simulate ODBC 1.0.
  • ADO
    Когда Вы программируете с API ADO и MyODBC, Вы должны принять во внимание некоторые заданные по умолчанию реквизиты, которые не обеспечиваются сервером MySQL. Например, использование реквизита CursorLocation Property как adUseServer возвратит для RecordCount Property результат -1. Сомневаюсь, что это входит в Ваши планы... Чтобы иметь правильное значение, Вы должны установить реквизит adUseClient так, как показано в коде на VB ниже:
    Dim myconn As New ADODB.Connection
    Dim myrs As New Recordset
    Dim mySQL As String
    Dim myrows As Long
    
    myconn.Open "DSN=MyODBCsample"
    mySQL = "SELECT * from user"
    myrs.Source = mySQL
    Set myrs.ActiveConnection = myconn
    myrs.CursorLocation = adUseClient
    myrs.Open
    myrows = myrs.RecordCount
    
    myrs.Close
    myconn.Close
    
    Другой вариант: использовать SELECT COUNT(*) для подобного запроса, чтобы получить правильное число строк.
    Active server pages (ASP)
    Вы должны использовать опцию Return matching rows.
    BDE applications
    Вы должны установить опции Don't optimize column widths и Return matching rows.
    Borland Builder 4
    Когда Вы начинаете запрос, Вы можете использовать реквизит Active или метод Open. Обратите внимание, что Active при запуске автоматически выдает запрос SELECT * FROM ..., который не может быть хорошим, если Ваши таблицы большие!
    ColdFusion (под Unix)
    Следующая информация поступила из документации на ColdFusion: Используйте следующую информацию, чтобы конфигурировать сервер ColdFusion для Linux, чтобы использовать драйвер unixODBC с MyODBC для источников данных MySQL. MyODBC Version 2.50.26 работает с MySQL Version 3.22.27 и Linux ColdFusion. Любая более новая версия должна также работать. Вы можете скачать MyODBC с http://www.mysql.com/downloads/api-myodbc.html ColdFusion Version 4.5.1 позволяет Вам через ColdFusion Administrator добавить источник данных MySQL. Однако, драйвер не включен в поставку ColdFusion Version 4.5.1. Прежде, чем драйвер MySQL появится в списке ODBC datasources, Вы должны сформировать и скопировать драйвер MyODBC в /opt/coldfusion/lib/libmyodbc.so. Каталог Contrib хранит программу mydsn-xxx.zip, которая позволяет Вам формировать и удалять файл записи DSN для MyODBC драйвера в Coldfusion.
    DataJunction
    Вы должны изменить таблицу для вывода VARCHAR вместо ENUM, поскольку пакет экспортирует последнее способом, который вызывает разрушение MySQL.
    Excel
    Работает. Некоторые советы:
    Word
    Чтобы получать данные из MySQL в документах Word/Excel, Вы должны использовать драйвер MyODBC и Add-in Microsoft Query help. Например, создайте базу данных с таблицей, содержащей 2 столбца текста:
    odbcadmin
    Тестовая программа для ODBC.
    Delphi
    Вы должны использовать BDE Version 3.2 или более новую. Установите поле опции `Don't optimize column width' при соединении с MySQL. Также имеется некоторый потенциально полезный код на Delphi, который устанавливает ODBC и BDE записи для MyODBC (BDE-запись требуется BDE Alias Editor, который свободно выкачивается с Delphi Super Page. (Спасибо за него Bryan Brunton bryan@flesherfab.com):
    fReg:= TRegistry.Create;
      fReg.OpenKey('\Software\ODBC\ODBC.INI\DocumentsFab', True);
      fReg.WriteString('Database', 'Documents');
      fReg.WriteString('Description', ' ');
      fReg.WriteString('Driver', 'C:\WINNT\System32\myodbc.dll');
      fReg.WriteString('Flag', '1');
      fReg.WriteString('Password', '');
      fReg.WriteString('Port', ' ');
      fReg.WriteString('Server', 'xmark');
      fReg.WriteString('User', 'winuser');
      fReg.OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources', True);
      fReg.WriteString('DocumentsFab', 'MySQL');
      fReg.CloseKey;
      fReg.Free;
      Memo1.Lines.Add('DATABASE NAME=');
      Memo1.Lines.Add('USER NAME=');
      Memo1.Lines.Add('ODBC DSN=DocumentsFab');
      Memo1.Lines.Add('OPEN MODE=READ/WRITE');
      Memo1.Lines.Add('BATCH COUNT=200');
      Memo1.Lines.Add('LANGDRIVER=');
      Memo1.Lines.Add('MAX ROWS=-1');
      Memo1.Lines.Add('SCHEMA CACHE DIR=');
      Memo1.Lines.Add('SCHEMA CACHE SIZE=8');
      Memo1.Lines.Add('SCHEMA CACHE TIME=-1');
      Memo1.Lines.Add('SQLPASSTHRU MODE=SHARED AUTOCOMMIT');
      Memo1.Lines.Add('SQLQRYMODE=');
      Memo1.Lines.Add('ENABLE SCHEMA CACHE=FALSE');
      Memo1.Lines.Add('ENABLE BCD=FALSE');
      Memo1.Lines.Add('ROWSET SIZE=20');
      Memo1.Lines.Add('BLOBS TO CACHE=64');
      Memo1.Lines.Add('BLOB SIZE=32');
      AliasEditor.Add('DocumentsFab','MySQL',Memo1.Lines);
    
    C++ Builder
    Проверялось с BDE Version 3.0. Единственая известная проблема состоит в том, что, когда изменяется схема таблицы, поля запроса не модифицируются. BDE, кажется, не распознает первичные ключи, только первичный индекс, хотя это не было проблемой.
    Vision
    Вы должны установить флажок опций Return matching rows.
    Visual Basic
    Чтобы модифицировать таблицу, Вы должны определить первичный ключ для таблицы. Visual Basic с ADO не может обрабатывать большие числа типа integer. Это означает, что некоторые запросы, подобно SHOW PROCESSLIST, не будут работать правильно. Устраняется это указанием опции OPTION=16834 в строке соединения ODBC или опции Change BIGINT columns to INT на экране соединения MyODBC. Вы можете также устанавливать Return matching rows.
    VisualInterDev
    Если Вы получаете ошибку [Microsoft][ODBC Driver Manager] Driver does not support this parameter, причина может быть в том, что Вы имеете BIGINT в Вашем результате. Попробуйте устанавливать опцию Change BIGINT columns to INT на экране соединения MyODBC.
    Visual Objects
    Вы должны использовать флажок опции Don't optimize column widths .
    к оглавлению

    Знаете ли Вы, что локальность - означает, что реализация одной абстракции может быть создана и рассмотрена без необходимости анализа реализации какой-либо другой абстракции. Принцип локальности позволяет составлять программу из абстракций, создаваемых людьми, работающими независимо друг от друга. Один человек может создать абстракцию, которая использует абстракцию, созданную кем-то другим.

    НОВОСТИ ФОРУМА

    Форум Рыцари теории эфира


    Рыцари теории эфира
     10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
    10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
    10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
    10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
    10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
    10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
    10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
    10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
    10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
    10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
    10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
    10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
    Bourabai Research - Технологии XXI века Bourabai Research Institution