powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Ошибка при выполнении очень длинного SQL запроса
25 сообщений из 55, страница 1 из 3
Ошибка при выполнении очень длинного SQL запроса
    #40122162
skipper_prog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
БД FireBird.
Имеется запрос примерно ~12000 символов (прошу длину запроса на обсуждение не выносить, он такой есть, сильно ужаться не может).
Из IBExpert выполняется без проблем.
При выполнении из Delphi компонент TpFIBDataSet, вылазит следующая ошибка "Unexpected end of command - line 1, column 10814".
Насколько я понял компоненты Delphi при отправке запроса в Firebird нарезает его на пакеты, соответственно часть идет в одном пакете, часть в другом. Но видимо Firebird начинает его парсить и выполнять не дождавшись оставшихся пакета(ов).

Не значительно укоротив данный запрос, выполняется без проблем.
В поле TpFIBDataSet.SelectSQL - хранится весь запрос (проверял).
Обсуждений данной темы на форуме не нашел, параметры у DataSet, транзакции и БД покурил, ничего похожего что может быть связанно с моей проблемой не нашел.

Может кто то сталкивался с данной проблемой?
...
Рейтинг: 0 / 0
Ошибка при выполнении очень длинного SQL запроса
    #40122165
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чарсет коннекта какой?
версия сервера и клиента какая?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка при выполнении очень длинного SQL запроса
    #40122177
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skipper_progИмеется запрос примерно ~12000 символов

Судя по ошибке больше похоже на ~75000 байт. И если это не создание ХП, то
ужаться он не только "может", но и должен за счёт использования параметров
вместо литералов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка при выполнении очень длинного SQL запроса
    #40122192
skipper_prog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий,

Строка подключения стандартная, несколько параметров изменено.

Версия сервера 3. (у клиента я так понимаю тоже самое).
...
Рейтинг: 0 / 0
Ошибка при выполнении очень длинного SQL запроса
    #40122193
skipper_prog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
Использую параметры.
Сначала все было хорошо, а у одного клиента вылезла ошибка.
Один параметр используется в 10 местах, и вместо него подставляется строка (ну вот у одного она оказалась длиннее чем у остальных, соответственно и вылезла за предел).

А что это 75000?
Когда я про символы писал, имелось ввиду, что вылезаю за пределы размера пакетов в байтах.
...
Рейтинг: 0 / 0
Ошибка при выполнении очень длинного SQL запроса
    #40122200
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skipper_prog
Строка подключения стандартная, несколько параметров изменено.
я тебя спросил про чарсет.
а ты мне картинки рисуешь.
не по теме.

зы: про пакеты смешно было, да.
...
Рейтинг: 0 / 0
Ошибка при выполнении очень длинного SQL запроса
    #40122205
skipper_prog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий,
единственный закрытый параметр оказался CHARSET = WIN1251

Мимопроходящийзы: про пакеты смешно было, да.
Когда не знаешь в чем дело, все за правду кажется.
Это все что смог накопать на просторах инета.
...
Рейтинг: 0 / 0
Ошибка при выполнении очень длинного SQL запроса
    #40122208
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"есть мнение, и не только моё..." ©
что ты используешь не параметры, а чисто ФИБ+ хрень, под названием "макросы".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка при выполнении очень длинного SQL запроса
    #40122211
Фотография peter64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skipper_prog

Один параметр используется в 10 местах, и вместо него подставляется строка (ну вот у одного она оказалась длиннее чем у остальных, соответственно и вылезла за предел).

и строка вида
where .... что-то in (.............................) ?
...
Рейтинг: 0 / 0
Ошибка при выполнении очень длинного SQL запроса
    #40122213
skipper_prog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий

"есть мнение, и не только моё..." ©
что ты используешь не параметры, а чисто ФИБ+ хрень, под названием "макросы".


Скорее всего в данном случае ФИБ+ Хрень. Пишу @PARAM.
Могу попробовать переписать на :PARAM - если это будут именно параметры.

Но есть еще один более длинный запрос, который без параметров, с ним тогда как быть?
...
Рейтинг: 0 / 0
Ошибка при выполнении очень длинного SQL запроса
    #40122214
skipper_prog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
peter64
skipper_prog

Один параметр используется в 10 местах, и вместо него подставляется строка (ну вот у одного она оказалась длиннее чем у остальных, соответственно и вылезла за предел).

и строка вида
where .... что-то in (.............................) ?


Верно.
...
Рейтинг: 0 / 0
Ошибка при выполнении очень длинного SQL запроса
    #40122217
Фотография peter64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skipper_prog,
1. попробуй GTT
2. http://www.ibase.ru/ibfaq/#inparam
...
Рейтинг: 0 / 0
Ошибка при выполнении очень длинного SQL запроса
    #40122220
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skipper_prog
Один параметр используется в 10 местах, и вместо него подставляется строка (ну вот у одного она оказалась длиннее чем у остальных, соответственно и вылезла за предел).
Размер данных параметров никоем образом не влияет на текст и соответственно размер запроса.
...
Рейтинг: 0 / 0
Ошибка при выполнении очень длинного SQL запроса
    #40122222
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
Размер данных параметров никоем образом не влияет на текст и соответственно размер запроса.
у него не параметры.
вот за подобную (и не только) хрень, я и не люблю плюсЫ.
...
Рейтинг: 0 / 0
Ошибка при выполнении очень длинного SQL запроса
    #40122224
skipper_prog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
peter64
skipper_prog,
1. попробуй GTT
2. http://www.ibase.ru/ibfaq/#inparam


Спасибо за наведения на мысли.

1. GTT - это генератор? Не понял как в мое случае использовать.
2. Пока проверил в IBexpert, работает только для для in < 4, далее ничего не выводит(позже попробую в Delphi).
...
Рейтинг: 0 / 0
Ошибка при выполнении очень длинного SQL запроса
    #40122227
Фотография peter64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skipper_prog,
1.Global Temporary Tables
2. раньше у in ограничение стояло в 1024.
если работает только для для in < 4 , ищи ошибку у себя.
без куска запроса тяжело гадать
...
Рейтинг: 0 / 0
Ошибка при выполнении очень длинного SQL запроса
    #40122232
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
peter64
раньше у in ограничение стояло в 1024.
Я в тройке 1-й раз в жизни нарвался. 1500 (на 1501 упало).
Пришлось переделать по-нормальному :)
...
Рейтинг: 0 / 0
Ошибка при выполнении очень длинного SQL запроса
    #40122235
skipper_prog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
peter64
skipper_prog,
1.Global Temporary Tables
2. раньше у in ограничение стояло в 1024.
если работает только для для in < 4 , ищи ошибку у себя.
без куска запроса тяжело гадать


1. Как вариант можно рассмотреть, но не очень бы хотелось, тк сам запрос достаточно быстро выполняется;
2. Сделал тестовый запрос к одной таблице, ID - int. Может это IBexpert, что то не так делает.
(~1~2~3~) - так работает.
(~1~2~3~4~) - так уже не работает. (все значения есть, хотя и без них должно работать)
...
Рейтинг: 0 / 0
Ошибка при выполнении очень длинного SQL запроса
    #40122238
Фотография peter64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock,
хотя если у ТС-а Unexpected end of command и он подставляет строку,
скорее всего в строке есть апостроф , или другой левый символ.
Думаю, просто неправильно формирует подстановочную строку.
...
Рейтинг: 0 / 0
Ошибка при выполнении очень длинного SQL запроса
    #40122239
Фотография peter64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skipper_prog,
ошибка та же?
...
Рейтинг: 0 / 0
Ошибка при выполнении очень длинного SQL запроса
    #40122248
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skipper_progА что это 75000?

При использовании старого API можно передать длину запроса (а можно и не
передавать), но параметр для этого - 16-ти разрядный и если запрос длиннее -
возникает переполнение и на сервер уходит усечённый запрос, что обычно и
приводит к описанной ошибке с номером символа за вычетом 65536.
65536 + 10814 ~ 75000.

Про "пакеты" - это звон из района MySQL, но там другая ошибка, просто соединение
рвётся как будто сервер упал.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка при выполнении очень длинного SQL запроса
    #40122253
skipper_prog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
peter64
skipper_prog,
ошибка та же?


Подстановочная строка формируется правильно, взял уже значение из самого параметра.
Натолкнули меня на мысль.
Проверил, вставил "In" в данный запрос руками и скормил DataSet (без использования параметров), запрос отработал.

Предполагаю, может сам параметр обрезается при подстановке в запрос. Как проверить сформированный запрос который улетает, я не знаю как.
...
Рейтинг: 0 / 0
Ошибка при выполнении очень длинного SQL запроса
    #40122255
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тро-ло-ло.

100500%
...
Рейтинг: 0 / 0
Ошибка при выполнении очень длинного SQL запроса
    #40122257
Фотография peter64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skipper_prog,
1. Поставить точку останова.
Посмотреть в дебаггере.

2. Перед выполнением запроса записать его в файл.
Файл открыть, скопировать содержимое.
Выполнить в IBExpert.
Profit.
...
Рейтинг: 0 / 0
Ошибка при выполнении очень длинного SQL запроса
    #40122259
skipper_prog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий
тро-ло-ло.

100500%


длина строки в параметре получается 155 символов.
...
Рейтинг: 0 / 0
25 сообщений из 55, страница 1 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Ошибка при выполнении очень длинного SQL запроса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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