powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Настройка odbc для подключения к sybase ase (*unix)
11 сообщений из 11, страница 1 из 1
Настройка odbc для подключения к sybase ase (*unix)
    #38792610
boldyrev.gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе время суток! Попал я на поддержку проекта, который начинали писать много лет назад. Сейчас занимаюсь настройкой локального сервера (многие вещи делаю впервые), и хотя на боевой машине все работает нормально (следовательно не в самом коде ковыряться надо), на локальном сервере возникает ошибка:
[unixODBC][FreeTDS][SQL Server]Invalid cursor state

Код слудующий (за вычетом логики):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
$db=odbc_connect($sv['KEEPER'],$sv['Php'],$sv['PhpPwd']);

$sUser=odbc_exec($db,$sel);

$sv['sLdap']     = odbc_result($sUser,'Ldap');
$sv['sName']     = odbc_result($sUser,'Name');
$sv['sPwd']      = odbc_result($sUser,'Pwd');
$sv['sDostup']   = odbc_result($sUser,'Dostup');
$sv['sDat_Last'] = odbc_result($sUser,'Dat_Last');

odbc_exec($db,$upd_);



Непосредственно по настройке odbc, в odbcinst.ini заведен дравер:
Код: sql
1.
2.
3.
4.
5.
6.
7.
[TDS]

Description     =ODBC Sybase driver
Driver          =/usr/lib/i386-linux-gnu/odbc/libtdsodbc.so
Setup           =/usr/lib/i386-linux-gnu/odbc/libtdsodbc.so
FileUsage       =1
UsageCount      =3



И DSN для подключения в odbc.ini:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
[KEEPER]

Description     = KEEPER Data Source
User ID         = *user*
Password        = *password*
Driver          = TDS
Server          = *server IP*
Port            = *port*
Database        = *DB name*



Из деталей, локальный сервер поднимаю на Ubuntu 12.04, а odbc библиотека - unixODBC.

Объясните пожалуйста, в чем заключаеться проблема, и каким образом ее решить?
...
Рейтинг: 0 / 0
Настройка odbc для подключения к sybase ase (*unix)
    #38793332
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boldyrev.geneСейчас занимаюсь настройкой локального сервера (многие вещи делаю впервые), и хотя на боевой машине все работает нормально (следовательно не в самом коде ковыряться надо), на локальном сервере возникает ошибка:Это надо читать так что у тебя в odbc.ini есть две группы записей одна показывает на боевой сервер, вторая на локальный. Один и тот же код прекрасно работает при запросе к боевому серверу, но не работает к локальному. Так?

Если да, то смотри во первых версии боевого и локального серверов. Во вторых, смотри их настройки. Проще всего будет пойти на поклон к своему SA и просить его найти различия.
...
Рейтинг: 0 / 0
Настройка odbc для подключения к sybase ase (*unix)
    #38793344
boldyrev.gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl, сервер БД один. Настраиваю я сервер приложения. Уже знаю, что эта проблема кроиться в неспособности FreeDTS выполнять больше одного запроса использую один ресурс подключения (при работе с sybase и mssql). Я надеюсь найти другой драйвер для подключения к sybase базе.
На данный момент возник другой вопрос, он думаю по проще будет. У меня при получении через odbc_result обрезаеться строка до 255 символов. Не знаете где можно изменить это ограничение?
...
Рейтинг: 0 / 0
Настройка odbc для подключения к sybase ase (*unix)
    #38793435
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boldyrev.geneWhite Owl, сервер БД один. Настраиваю я сервер приложения. Уже знаю, что эта проблема кроиться в неспособности FreeDTS выполнять больше одного запроса использую один ресурс подключения (при работе с sybase и mssql). Я надеюсь найти другой драйвер для подключения к sybase базе. Если у тебя сервер 12 или новее - выкинь FreeTDS.
Для ASE надо использовать CTLib (Open Client) идущий в поставке с сервером. TDS и его производные можно использовать только если у тебя Sybase 10 или 11. Уже в ASE 12.0 протокол TDS был признан устаревшим и не развивающимся, с ASE 15 его вообще использовать практически нельзя.
Но если у тебя есть клиентский DVD с Open Client, то будет и соответствующий ODBC драйвер называющийся Adaptive Server Enterprise. Если DVD нету, то ищи его у своих админов или кто вам ставил СУБД? Честно лицензированные люди могут еще пойти на сайт SAP'а и скачать там SDK со всеми нужными драйверами.

boldyrev.geneНа данный момент возник другой вопрос, он думаю по проще будет. У меня при получении через odbc_result обрезаеться строка до 255 символов. Не знаете где можно изменить это ограничение?Знаю. Использовать кусочное чтение. Запускать SQLGetData() и смотреть что оно вернуло SQL_SUCCESS или SQL_SUCCESS_WITH_INFO.
Ах да, у тебя PHP - тогда берешь соответствующий модуль и исправляешь в нем. Это не так уж сложно.
...
Рейтинг: 0 / 0
Настройка odbc для подключения к sybase ase (*unix)
    #38794591
boldyrev.gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl, использовал сайбэйсовски драйвер, получил ошибку:
[unixODBC][Driver Manager]Can't open lib '/opt/sybase/DataAccess/lib/libsybdrvodb.so' : file not found
Чего так?
...
Рейтинг: 0 / 0
Настройка odbc для подключения к sybase ase (*unix)
    #38794875
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boldyrev.geneWhite Owl, использовал сайбэйсовски драйвер, получил ошибку:
[unixODBC][Driver Manager]Can't open lib '/opt/sybase/DataAccess/lib/libsybdrvodb.so' : file not found
Чего так?Скорее всего он у тебя не установлен. Проверь как оно проинсталлированно. Насколько я помню, ODBC драйвера под Линуксом опциональная вещь и там надо специально ставить галочку при установке.
Но да, именно этот драйвер и надо использовать.

Если данный файл есть физически и вообще весь каталог /opt/sybase не пуст (там ооооочень много всего должно быть). Уточни из под какого юзера ты запускаешь скрипты. Этот юзер должен иметь две переменные окружения SYBASE и SYBASE_OCS. Посмотри их значения из-под того юзера кто ставил клиентский пакет, но скорее всего это будет SYBASE=/opt/sybase, SYBASE_OCS=OCS-15_0.

Убедись что клиентский пакет работает вообще. Из под юзера который работает с базой запусти isql -v и должен получить описание клиента.
dsedit - задай себе алиасы для серверов
isql -Salias -Uuser -Ppassword
должен получить приглашение ввода в виде "1>".
Дай команду select @@version - узнаешь версию СУБД.
Если последний тест прошел - тогда можешь возвращаться к скриптам и ODBC.

И кстати, в odbc.ini ты пишешь Server = *server IP*. Очень не рекомендую использовать IP. Лучше имя сервера которое понимается твоим локальным DNS. Намного проще в дальнейшем жить будет.
...
Рейтинг: 0 / 0
Настройка odbc для подключения к sybase ase (*unix)
    #38795430
boldyrev.gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
C драйвером разобрался.
Теперь испытываю затруднения с кодировкой... Сам проект на cp1251, сервер на cp866. При получении кириллических данных происходит конвертация из cp866 в cp1251.
На локальном сервере сейчас вместо кириллицы вопросительные знаки.
Если что, вывод locale -a:
C
C.UTF-8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
POSIX
ru_RU.cp1251
ru_RU.utf8
ru_UA.utf8
uk_UA.utf8


Пока что даже не уверен куда мне лезть, чтобы поправить, так как не долго думая представляется три варианта: система, odbc, sybase.
...
Рейтинг: 0 / 0
Настройка odbc для подключения к sybase ase (*unix)
    #38795728
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нууууу..... тут я не эксперт, у меня все либо на родном английском, либо на UTF-8, так что проблем с локалями нет в принципе...

Но что мешает читать-писать в БД в той кодировке что принята в БД и вручную на клиенте конвертировать?
...
Рейтинг: 0 / 0
Настройка odbc для подключения к sybase ase (*unix)
    #38795846
boldyrev.gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl, беда в том, что на клиенте и так конвертация происходит...
Например:
Код: php
1.
$sv['sName'] = convert_cyr_string(odbc_result($sUser,'Name'),'d','w');
...
Рейтинг: 0 / 0
Настройка odbc для подключения к sybase ase (*unix)
    #38796663
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boldyrev.geneWhite Owl, беда в том, что на клиенте и так конвертация происходит...эээээ.... а почему это беда?
...
Рейтинг: 0 / 0
Настройка odbc для подключения к sybase ase (*unix)
    #38796668
boldyrev.gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl, потому, что предложенное Вами решение уже внедрено, а проблема осталась... :)
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Настройка odbc для подключения к sybase ase (*unix)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]