Чертовски много времени, пытаясь изолировать проблему при установке нового сервера:
Я установил MySQL, unixODBC и MySQL Connector для ODBC, установил odbc.ini и odbcinst.ini, как и в других 32-битных системах, но у меня возникла проблема с приложениями (кроме PHP), получающими искаженные данные после запроса.
Вот что возвращает прямой запрос MySQL для целей управления:
mysql> select id,username from users limit 3; +------+----------+ | id | username | +------+----------+ | 786 | 101010 | | 587 | 1234 | | 1124 | 123456 | +------+----------+ 3 rows in set (0.00 sec) mysql>
Та же команда в isql через ODBC возвращает этот искаженный результат, возвращается только первая часть данных:
SQL> select id,username from users limit 3; +-----------+---------------------------------+ | id | username | +-----------+---------------------------------+ | 786 | | | +-----------+---------------------------------+ SQLRowCount returns 3 3 rows fetched SQL>
Мои приложения, такие как isql, не могут возвращать более одного фрагмента данных. Как ни странно, скрипты PHP работают нормально, но, к сожалению, мои приложения не основаны на PHP. Вот форматированный вывод PHP:
ID: 786 Username: 101010 ID: 587 Username: 1234 ID: 1124 Username: 123456
odbc.ini
[site-db] Description = MySQL ODBC Site DB Driver = MySQL User = root Password = password Database = test Option = 3 Socket = /var/lib/mysql/mysql.sock
odbcinst.ini
[MySQL] DRIVER = /usr/lib64/libmyodbc3.so UsageCount = 1
Системная информация:
ОС: CentOs 5.7 x86_64
MySQL: Версия сервера: 5.5.20-log Сервер сообщества MySQL (GPL) от Remi x86_64
Коннектор MySQL: v3.51.30-0 x86_64
unixODBC: 2.2.11 x86_64
Если кто-нибудь может сделать какие-то предложения относительно того, как я могу решить эту проблему, я был бы очень признателен.
Использование RPM от MySQL было неправильным путем. Нашел RPM для EL5, который работал без сбоев, понятия не имею, что он не показывал в репозиториях YUM ... но теперь все хорошо.