|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
БД FireBird. Имеется запрос примерно ~12000 символов (прошу длину запроса на обсуждение не выносить, он такой есть, сильно ужаться не может). Из IBExpert выполняется без проблем. При выполнении из Delphi компонент TpFIBDataSet, вылазит следующая ошибка "Unexpected end of command - line 1, column 10814". Насколько я понял компоненты Delphi при отправке запроса в Firebird нарезает его на пакеты, соответственно часть идет в одном пакете, часть в другом. Но видимо Firebird начинает его парсить и выполнять не дождавшись оставшихся пакета(ов). Не значительно укоротив данный запрос, выполняется без проблем. В поле TpFIBDataSet.SelectSQL - хранится весь запрос (проверял). Обсуждений данной темы на форуме не нашел, параметры у DataSet, транзакции и БД покурил, ничего похожего что может быть связанно с моей проблемой не нашел. Может кто то сталкивался с данной проблемой? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 15:28 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
чарсет коннекта какой? версия сервера и клиента какая? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 15:31 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
skipper_progИмеется запрос примерно ~12000 символов Судя по ошибке больше похоже на ~75000 байт. И если это не создание ХП, то ужаться он не только "может", но и должен за счёт использования параметров вместо литералов. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 15:49 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
Мимопроходящий, Строка подключения стандартная, несколько параметров изменено. Версия сервера 3. (у клиента я так понимаю тоже самое). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 16:12 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Использую параметры. Сначала все было хорошо, а у одного клиента вылезла ошибка. Один параметр используется в 10 местах, и вместо него подставляется строка (ну вот у одного она оказалась длиннее чем у остальных, соответственно и вылезла за предел). А что это 75000? Когда я про символы писал, имелось ввиду, что вылезаю за пределы размера пакетов в байтах. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 16:16 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
skipper_prog Строка подключения стандартная, несколько параметров изменено. а ты мне картинки рисуешь. не по теме. зы: про пакеты смешно было, да. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 16:25 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
Мимопроходящий, единственный закрытый параметр оказался CHARSET = WIN1251 Мимопроходящийзы: про пакеты смешно было, да. Когда не знаешь в чем дело, все за правду кажется. Это все что смог накопать на просторах инета. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 16:30 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
"есть мнение, и не только моё..." © что ты используешь не параметры, а чисто ФИБ+ хрень, под названием "макросы". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 16:38 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
skipper_prog Один параметр используется в 10 местах, и вместо него подставляется строка (ну вот у одного она оказалась длиннее чем у остальных, соответственно и вылезла за предел). и строка вида where .... что-то in (.............................) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 16:43 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
Мимопроходящий "есть мнение, и не только моё..." © что ты используешь не параметры, а чисто ФИБ+ хрень, под названием "макросы". Скорее всего в данном случае ФИБ+ Хрень. Пишу @PARAM. Могу попробовать переписать на :PARAM - если это будут именно параметры. Но есть еще один более длинный запрос, который без параметров, с ним тогда как быть? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 16:46 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
peter64 skipper_prog Один параметр используется в 10 местах, и вместо него подставляется строка (ну вот у одного она оказалась длиннее чем у остальных, соответственно и вылезла за предел). и строка вида where .... что-то in (.............................) ? Верно. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 16:47 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 16:58 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
skipper_prog Один параметр используется в 10 местах, и вместо него подставляется строка (ну вот у одного она оказалась длиннее чем у остальных, соответственно и вылезла за предел). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 17:06 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
YuRock Размер данных параметров никоем образом не влияет на текст и соответственно размер запроса. вот за подобную (и не только) хрень, я и не люблю плюсЫ. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 17:08 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
peter64 Спасибо за наведения на мысли. 1. GTT - это генератор? Не понял как в мое случае использовать. 2. Пока проверил в IBexpert, работает только для для in < 4, далее ничего не выводит(позже попробую в Delphi). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 17:12 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
skipper_prog, 1.Global Temporary Tables 2. раньше у in ограничение стояло в 1024. если работает только для для in < 4 , ищи ошибку у себя. без куска запроса тяжело гадать ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 17:16 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
peter64 раньше у in ограничение стояло в 1024. Пришлось переделать по-нормальному :) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 17:20 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
peter64 skipper_prog, 1.Global Temporary Tables 2. раньше у in ограничение стояло в 1024. если работает только для для in < 4 , ищи ошибку у себя. без куска запроса тяжело гадать 1. Как вариант можно рассмотреть, но не очень бы хотелось, тк сам запрос достаточно быстро выполняется; 2. Сделал тестовый запрос к одной таблице, ID - int. Может это IBexpert, что то не так делает. (~1~2~3~) - так работает. (~1~2~3~4~) - так уже не работает. (все значения есть, хотя и без них должно работать) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 17:23 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
YuRock, хотя если у ТС-а Unexpected end of command и он подставляет строку, скорее всего в строке есть апостроф , или другой левый символ. Думаю, просто неправильно формирует подстановочную строку. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 17:27 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
skipper_prog, ошибка та же? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 17:28 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
skipper_progА что это 75000? При использовании старого API можно передать длину запроса (а можно и не передавать), но параметр для этого - 16-ти разрядный и если запрос длиннее - возникает переполнение и на сервер уходит усечённый запрос, что обычно и приводит к описанной ошибке с номером символа за вычетом 65536. 65536 + 10814 ~ 75000. Про "пакеты" - это звон из района MySQL, но там другая ошибка, просто соединение рвётся как будто сервер упал. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 17:41 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
peter64 skipper_prog, ошибка та же? Подстановочная строка формируется правильно, взял уже значение из самого параметра. Натолкнули меня на мысль. Проверил, вставил "In" в данный запрос руками и скормил DataSet (без использования параметров), запрос отработал. Предполагаю, может сам параметр обрезается при подстановке в запрос. Как проверить сформированный запрос который улетает, я не знаю как. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 17:48 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
тро-ло-ло. 100500% ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 17:50 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
skipper_prog, 1. Поставить точку останова. Посмотреть в дебаггере. 2. Перед выполнением запроса записать его в файл. Файл открыть, скопировать содержимое. Выполнить в IBExpert. Profit. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 17:56 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
Мимопроходящий тро-ло-ло. 100500% длина строки в параметре получается 155 символов. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 17:57 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
skipper_prog, покажи уже ету строку !!! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 17:58 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
peter64 skipper_prog, 1. Поставить точку останова. Посмотреть в дебаггере. 2. Перед выполнением запроса записать его в файл. Файл открыть, скопировать содержимое. Выполнить в IBExpert. Profit. сохранял в файл. Но запрос остается в чистом виде, как он и указан. Я его сохраняю из TpFIBDataSet.SelectSQL Вроде он все параметры подставляет непосредственно перед отправкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 17:59 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
peter64 skipper_prog, покажи уже ету строку !!! Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 18:00 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
skipper_prog peter64 skipper_prog, покажи уже ету строку !!! Код: sql 1.
не верю © ищи ошибку в другом месте ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 18:05 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
Хотя забыл, все же тут видно все взаимосвязано. ТК уменьшив длину самого запроса, запрос выполняется и с подстановкой параметров. Я не знаю что и думать, может как то все же нарезает, и вставляет какой то символ. Тогда такой вопрос, как посмотреть этот ошибочный запрос. Если нельзя из Delphi в FairBirde может есть возможность увидеть? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 18:07 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
skipper_prog, запрос секретный? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 18:08 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
peter64 skipper_prog пропущено... Код: sql 1.
не верю © ищи ошибку в другом месте Спасибо за помощь, буду дальше эксперементировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 18:08 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
peter64 skipper_prog, запрос секретный? Не особо секретный, но думаю без схемы бд особо смысла не имеет. На текущий момент. Исходный запрос с длинным параметром - не работает. Исходный запрос с коротким параметром - работает. Исходный запрос без параметра с подставленным in в тексте - работает.(длинным) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 18:40 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
skipper_progНа текущий момент. Исходный запрос с длинным параметром - не работает. Исходный запрос с коротким параметром - работает. Но в файл ты сохранял, конечно же, только тот запрос, что работает. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 18:57 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov skipper_progНа текущий момент. Исходный запрос с длинным параметром - не работает. Исходный запрос с коротким параметром - работает. Но в файл ты сохранял, конечно же, только тот запрос, что работает. Сохранял наоборот который не работает. Но это исходный запрос. Он между первым и вторым случаем не меняется. Если кто знает как сохранить запрос с представленными параметрами буду признателен . ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 20:04 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
Запрос мы, конечно, не увидим? И заполняемые параметры? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 21:17 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
ShowMessage(myDataset.ReadySelectText); ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2021, 09:31 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
skipper_prog Если кто знает как сохранить запрос с представленными параметрами буду признателен "Тут программист нужен" (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2021, 10:16 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
o_v_a ShowMessage(myDataset.ReadySelectText); К сожаления старая версия FIB. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2021, 10:56 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
skipper_prog, часто сталкиваюсь с таким, потому как фремворк написан с генерацией запросов на основании записей. А в запись можт прилететь какой либо корявый символ. Пример #0. gds32.dll примет такой символ как окончание текста запроса, а firebird отреагирует, что запрос не полный. Как вычисляется: при получении ошибки сохраняю запросы в файл лога в неименном виде - чтоп можно было символы посмотреть в каком именно коде его отправило. При перекомпиляции программы на x64, таких косяков увкличилось - что то намудрили в этой версии дельфи и часто неинициализированные записи получались с "мусором". Находил эти косяки и дописывал принудительную инициализацию. Еще вылезло то, что стека не хватило - в процедуре и запись инициализирована, но через пару строк проходил вызов другой процедуры с этой записью и в записи появлялся мусор. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2021, 12:23 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
skipper_prog o_v_a ShowMessage(myDataset.ReadySelectText); К сожаления старая версия FIB. И какая же? Что будет если добавить Код: pascal 1.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2021, 12:39 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
Gallemar skipper_prog пропущено... К сожаления старая версия FIB. И какая же? Что будет если добавить Код: pascal 1.
? ReadySelectText - данной функции нет, в используемой версии FIB ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2021, 13:28 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
skipper_prog ReadySelectText - данной функции нет, в используемой версии FIB Это какая версия? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2021, 14:00 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
а джейсонов еще нет в иб? я в мсскл тучу параметров загнал в длинную json-строку nvarchar(max), передал как один параметр в хп, распарсил и сджойнил куда надо ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2021, 14:04 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
Как только мелкомягкие не извращаются... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2021, 14:09 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
FB надеюсь 2.5? Трассировку как смотреть в IBExpert знаешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2021, 14:14 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
Gallemar skipper_prog ReadySelectText - данной функции нет, в используемой версии FIB Это какая версия? Вот только по этому поводу пинать не надо, 4.77 )) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2021, 14:16 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
Gallemar FB надеюсь 2.5? Трассировку как смотреть в IBExpert знаешь? FB 3.0. Трассировка ? Этот в Statement глянуть. Пытался там отловить запрос, но как оказалось, он до туда не доходит, видимо библиотека рубит его еще до отправки. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2021, 14:19 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
skipper_prog видимо библиотека рубит его еще до отправки. тогда настраивай trace на сервере бд и лови ошибки и запросы, если у тебя ситуация легко воспроизводится. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2021, 14:47 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
skipper_prog, fibdataset1.qselect.readysqltext ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2021, 18:28 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
я рекомендую сохранять в файл запрос в событии BeforeOpen датасете qry.SQL.SaveToFile('qryName.txt') ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2021, 17:25 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
Cobalt747 я рекомендую сохранять в файл запрос в событии BeforeOpen датасете qry.SQL.SaveToFile('qryName.txt') qry.Open? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2021, 17:28 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
А, ну, хотя, может, там на форме стоит Active=True, бывают любители. Но это не тот случай, тут же "параметры". ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2021, 17:29 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
YuRock Cobalt747 я рекомендую сохранять в файл запрос в событии BeforeOpen датасете qry.SQL.SaveToFile('qryName.txt') qry.Open? Тем что есть всякие еще события, на которых можно успеть поменять текст запроса ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2021, 20:24 |
|
Ошибка при выполнении очень длинного SQL запроса
|
|||
---|---|---|---|
#18+
Cobalt747 YuRock пропущено... А в чём прикол отдельное событие описывать, если можно эту строку вписать перед qry.Open? Тем что есть всякие еще события, на которых можно успеть поменять текст запроса Еще раз повторяюсь, во всех доступных полях хранятся исходные запросы, преобразование производится перед непосредственной отправкой на сервер. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2021, 14:52 |
|
|
start [/forum/topic.php?all=1&fid=58&tid=2036754]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
130ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
others: | 266ms |
total: | 510ms |
0 / 0 |