-804 ошибка Firebird

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Гость

-804 ошибка Firebird

Сообщение Гость » 20 дек 2004, 10:39

Нарисовал небольшую базульку на Firebird. Делаю к ней кучу запросов. Всё это дело вроде работает но иногда возникает ошибка -804
[20.12.2004 10:49:41]{ERROR}Loading XAS operations cache IBMessage:Dynamic SQL Error.
SQL error code = -804.
SQLDA missing or incorrect version, or incorrect number/type of variables.
SQLMessage:An error was found in the application program input parameters for the SQL statement.
[20.12.2004 10:50:04]{ERROR}Loading XAS operations cache IBMessage:Error reading data from the connection.
SQLMessage:Unsuccessful execution caused by a system error that precludes
successful execution of subsequent statements.

При чём возникает она если сольно увеличить нагрузку (более 15 запросов в секунду).

Ошибка возникает при вызове tmpQuery->ExecQuery();

Кто-нибудь с таким сталкивался?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 20 дек 2004, 10:44

обычно такое возникает в IBStoredProc. см. www.ibase.ru/devinfo/ibstp.htm

Гость

Сообщение Гость » 20 дек 2004, 11:17

Спасибо за ответ.
Я пользуюсь TpFIBQuery
версия сервера Firebird 1.5.1.4481
версия gds32.dll 1.5.1.4481
Т.е. вероятно я должен быть лишён таких проблем ... Может кто-нибудь подскажет что можно сделать что бы этого избежать.

А сообщения об ошибках действительно иногда бывают разные к примеру иногда мне выдаёт типа "Access violation in gds32.dll Приложение обратилось по адресу 00000000 и будет закрыто."

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 20 дек 2004, 12:06

"более 15 запросов в секунду" - это откуда? ты небось из multithread-приложения запросы дергаешь, не соблюдая правил. см. faq.

Гость

Сообщение Гость » 20 дек 2004, 12:48

Спасибо. Щас попробую. но в начале уточню.
Т.е. правильно ли я понял, что для каждой транзакции и для каждого запроса необходимо создавать свой экземпляр базы данных (ну в смысле надо для каждой нити TpFIBDatabase, TpFIBTransaction, TpFIBQuery)?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 20 дек 2004, 13:18

правильно. об этом и талдычит FAQ уже лет шесть-семь.

Гость

Сообщение Гость » 20 дек 2004, 13:42

Огромное спасибо. Щас на 25 транзакциях в секунду мой комп затыкается гы-гы.
Все работает. Я просто раньше в целях экономии проводил все транзакции через один компонент TpFIBDatabase.
После прочтения FAQ сделал их столько же сколько и транзакций с запросами и никаких ошибок.
Ещё раз спасибо.

getman
Сообщения: 13
Зарегистрирован: 23 ноя 2004, 13:49

Сообщение getman » 21 дек 2004, 08:38

Anonymous писал(а):Огромное спасибо. Щас на 25 транзакциях в секунду мой комп затыкается гы-гы.
Все работает. Я просто раньше в целях экономии проводил все транзакции через один компонент TpFIBDatabase.
После прочтения FAQ сделал их столько же сколько и транзакций с запросами и никаких ошибок.
Ещё раз спасибо.
Меня терзают смутные сомнения, вот если у меня 20 IBQUERY, естественно вызываются не сразу, а через разные формы, то что мне надо 20 IBTRANSACTION и столько же IBDATABASE? :oops: Или это имеется в виду работа через THread?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 21 дек 2004, 09:54

getman, не суетись. кто тебя вообще заставляет на каждый IBQuery пихать IBTransaction, пусть даже и при работе с thread???

Ответить