Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
23.07.2008, 23:52
|
|||
---|---|---|---|
|
|||
Разные результаты запроса на разных машинах |
|||
#18+
Привет! Моя программулина, используя jdbc-odbc мост, делает выборку из .dbf файлов (база 1с) с помощью драйвера foxpro. до вчерашнего дня всё работало нормально. после небольших доработок, на домашнем компе (с локальной копией базы) всё по-прежнему работает, а на рабочей машине - как-то странно: один запрос отрабатывает, а второй возвращает пустой ResultSet, как будто в таблице ничего нет. смущает именно то, что дома всё хорошо работает, select возвращает правильные результаты, а та же версия проги на рабочей работает криво. причем, теперь и бэкап программы, старая версия, которая нормально работала, так же возвращает пустой результат. Пробовал оттрейсить драйвер через "Источники данных ODBC", но, почему-то, лог файл не создаётся. Была мысль, что имеется какое-то ограничение на длину строки запроса, но ведь на одной машине это всё работает, да и страрая версия (запрос был на четыре столбца короче) теперь не работает. Подскажите, пожалуйста, куда вообще нужно смотреть и как можно с этим разобраться? А то вообще уже никаких мыслей не осталось. На всякий случай, приведу куски кода: URL драйвера: Код: plaintext
Запрос, который работает: Код: plaintext
Запрос, который не работает (но работает дома) : 43 taxiserver.DbHandler getOrders Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.07.2008, 07:55
|
|||
---|---|---|---|
Разные результаты запроса на разных машинах |
|||
#18+
при машинном коллейте нижний и верхний регистры неравны. Попробуй в связках поставить UPPER(ALLTIM(...)) Если пройдет, то дома просто русский коллейт выставлен ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.07.2008, 09:16
|
|||
---|---|---|---|
|
|||
Разные результаты запроса на разных машинах |
|||
#18+
Так ведь стоит же "Collate=Machine", или этого не достаточно? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.07.2008, 10:01
|
|||
---|---|---|---|
Разные результаты запроса на разных машинах |
|||
#18+
Значит изменились данные, возможно была переиндексация с русским коллейтом, естественно Rushmore по индексному файлу стал неправильным. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.07.2008, 12:56
|
|||
---|---|---|---|
|
|||
Разные результаты запроса на разных машинах |
|||
#18+
Хорошо, тогда сегодня вечером проверю и отпишусь, как что. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.07.2008, 00:02
|
|||
---|---|---|---|
|
|||
Разные результаты запроса на разных машинах |
|||
#18+
Еху!!! Проблема разрешилась! Если кому интересно, то вот причина: В 1с строки неограниченой длины хранятся в отдельной таблице. Если же длина ограничена, то эти строки хранятся в таблице документа, которому они принадлежат. Чтобы упростить доступ к ним, я в локальной копии базы ограничил длину этих строк до 200 символов. А на рабочей машине длину поменяли на 300 символов. Из-за этого и возникло разное поведение программы на домашней и рабочей машины: для драйвера foxpro ограничение на длину строки (char) - 255 символов. Для 1с, видимо, этого ограничения нет, или оно больше, чем 255. Странно, что драйвер не выдавал ни эксепшенов, ни предупреждений, а тупо выдавал пустой результат, не смотря на то, что в select'е были и другие данные. Кстати, не знает ли кто-нибудь, каким образом организован доступ к базе в 1с? Видимо, драйвер 1с - это не полный эквивалент. Или просто есть какие-то нюансы? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=41&tablet=1&tid=1587467]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 122ms |
0 / 0 |