|
Ошибка при выполнении очень длинного 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 |
|
|
start [/forum/topic.php?fid=58&msg=40122192&tid=2036754]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 271ms |
total: | 416ms |
0 / 0 |