powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / О протоколировании в Interbase 7.0 / логи транзакций
27 сообщений из 27, показаны все 2 страниц
О протоколировании в Interbase 7.0 / логи транзакций
    #38823459
chd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
chd
Гость
Здравствуйте!
В компании имеется самописное и брошенное на произвол судьбы ПО, расчитывающее план покупок компонентов для производства. Компоненты определяются путем анализа таблиц компонентов изделия. Кто-то когда-то внес запись о компоненте (и не сознается), которая парсится и пытается преобразоваться (предположительно) в число, вследствие чего выдается ошибка: conversion error from string "3930.0000".
В чем вопрос: подскажите, пожалуйста, какой-либо способ протоколирования работы interbase, с помощью которого можно будет найти ту проблемную запись, которая приводит к ошибке. Можно ссылку с примерами. Спасибо.
...
Рейтинг: 0 / 0
О протоколировании в Interbase 7.0 / логи транзакций
    #38823471
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
О протоколировании в Interbase 7.0 / логи транзакций
    #38823487
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chd,

Версию сервера не указываете принципиально?

Очевидно где-то зарыт неявный каст. Как эта запись парсится-то (можно начать с зависимых от таблицы процедур и триггеров)?
...
Рейтинг: 0 / 0
О протоколировании в Interbase 7.0 / логи транзакций
    #38823492
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

IB 7. Это в названии темы указано.
...
Рейтинг: 0 / 0
О протоколировании в Interbase 7.0 / логи транзакций
    #38823512
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Не углядел ;(
...
Рейтинг: 0 / 0
О протоколировании в Interbase 7.0 / логи транзакций
    #38823517
chd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
chd
Гость
DarkMaster,

1. 7.0
2. К сожалению, мне неизвестная проблемная таблица
...
Рейтинг: 0 / 0
О протоколировании в Interbase 7.0 / логи транзакций
    #38823523
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chd,

Тогда почему вы сделали вывод о том, что кто-то предположительно внес куда-то запись, которая неправильно обрабатывается?
...
Рейтинг: 0 / 0
О протоколировании в Interbase 7.0 / логи транзакций
    #38823524
chd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
chd
Гость
Симонов Денис,
а там демо - это пустышка или хоть пару раз можно поработать?
...
Рейтинг: 0 / 0
О протоколировании в Interbase 7.0 / логи транзакций
    #38823528
chd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
chd
Гость
DarkMaster,

вероятнее всего так, потому что для других изделий план закупок составлется нормально без ошибок.

И тогда, может, подскажете, d conversion error from string "3930.0000" 3930.0000 - это код ошибки или сама строка такая? И смогу ли я тогда, скажем, в ibexpert провести глобальный поиск по базе этой строки?
...
Рейтинг: 0 / 0
О протоколировании в Interbase 7.0 / логи транзакций
    #38823538
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chdDarkMaster,
И тогда, может, подскажете, d conversion error from string "3930.0000" 3930.0000 - это код ошибки или сама строка такая? И смогу ли я тогда, скажем, в ibexpert провести глобальный поиск по базе этой строки?

Это проблемная строка, из которой пытаются получить что-то другого типа (цифру, дату, время).
Искать по базе - это конечно здорово. Хотя бы предположения есть, где эта "3930.00" (как часть строки очевидно) может хранится? Сколько там таблиц всего? Может можно по названию таблицы сделать предположение о том, что там хранится?
...
Рейтинг: 0 / 0
О протоколировании в Interbase 7.0 / логи транзакций
    #38823539
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Chd!
You wrote on 3 декабря 2014 г. 12:43:51:

Chd> вероятнее всего так, потому что для других изделий план закупок
> составлется нормально без ошибок.
>
> И тогда, может, подскажете, d conversion error from string "3930.0000"
> 3930.0000 - это код ошибки или сама строка такая? И смогу ли я тогда,
> скажем, в ibexpert провести глобальный поиск по базе этой строки?
этот литерал может приходить "снаружи" (из программы) на сервер,
а не обязательно храниться в базе.

тебе нужно ставить логирование всех запросов (на клиенте), которые
программа отправляет серверу.
ловить момент возникновения эксепшена и смотреть текст запроса который
привел к оному.

если программа нарисована на IBX, или Fib+, то сделать это достаточно
просто.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
О протоколировании в Interbase 7.0 / логи транзакций
    #38823543
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, ошибка может быть и не серверная.
нужен полный текст.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
О протоколировании в Interbase 7.0 / логи транзакций
    #38823547
Sia-Ori1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
БДЕшная беда подобная вылечилась с помощью SQL-монитора, были найдены запросы проблемные.
...
Рейтинг: 0 / 0
О протоколировании в Interbase 7.0 / логи транзакций
    #38823555
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

У них ПО "забытое"... Не факт, что есть исходники ;(
...
Рейтинг: 0 / 0
О протоколировании в Interbase 7.0 / логи транзакций
    #38823562
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Darkmaster!
You wrote on 3 декабря 2014 г. 13:00:13:

Darkmaster> У них ПО "забытое"... Не факт, что есть исходники ;(
они и не нужны
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
О протоколировании в Interbase 7.0 / логи транзакций
    #38823581
chd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
chd
Гость
Мимопроходящий,

Вот скриншот (приложен). В клиенте такой строки нет, т.е. вряд ли она приходит снаружи
...
Рейтинг: 0 / 0
О протоколировании в Interbase 7.0 / логи транзакций
    #38823591
chd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
chd
Гость
DarkMasterchdDarkMaster,
И тогда, может, подскажете, d conversion error from string "3930.0000" 3930.0000 - это код ошибки или сама строка такая? И смогу ли я тогда, скажем, в ibexpert провести глобальный поиск по базе этой строки?

Это проблемная строка, из которой пытаются получить что-то другого типа (цифру, дату, время).
Искать по базе - это конечно здорово. Хотя бы предположения есть, где эта "3930.00" (как часть строки очевидно) может хранится? Сколько там таблиц всего? Может можно по названию таблицы сделать предположение о том, что там хранится?

74 таблицы. Исходники какие-то есть. Но не готов возиться с отладкой.
Подскажите как составить запрос для поиска это подстроки во всех таблицах БД.
...
Рейтинг: 0 / 0
О протоколировании в Interbase 7.0 / логи транзакций
    #38823663
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chd,

Ну как-то так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
execute block (searchstr varchar(100)=?searchstr)
returns (SQL varchar(2048))
as
declare variable object_name varchar(32);
declare variable field_name varchar(32);
declare variable WSQL varchar(2048);
begin
  -- select all tables
  for select rdb$relations.rdb$relation_name
      from rdb$relations
      where rdb$relations.rdb$system_flag=0 and
            rdb$relations.rdb$view_blr is null
      into :object_name
  do begin
       SQL=''; WSQL='';
       for select trim(rdb$relation_fields.rdb$field_name)
           from rdb$relation_fields
           join rdb$fields on (rdb$fields.rdb$field_name=rdb$relation_fields.rdb$field_source and
                               rdb$fields.rdb$field_type in (14,37))
           where rdb$relation_fields.rdb$relation_name=:object_name
           into :field_name
        do begin
             SQL=SQL||field_name||',';
             WSQL=WSQL||'('||field_name||' containing '''||searchstr||''') OR';
           end
        SQL=trim(',' from SQL);
        WSQL=trim('OR' from WSQL);
        SQL='SELECT '||SQL||' FROM '||trim(object_name)||' WHERE '||WSQL;
        suspend;
     end
end



Общий смысл - на вход отдаем строку, которую ищем - на выходе - получаем SQL запросы к таблицам в которых есть CHAR/VARCHAR поля, могущие содержать строку.
...
Рейтинг: 0 / 0
О протоколировании в Interbase 7.0 / логи транзакций
    #38823670
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chdПодскажите как составить запрос для поиска это подстроки во всех таблицах БД.
Извлечь все данные через IBE, запустить поиск по полученному файлу. Самое простое
...
Рейтинг: 0 / 0
О протоколировании в Interbase 7.0 / логи транзакций
    #38823687
chd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
chd
Гость
Fr0sT-BrutalchdПодскажите как составить запрос для поиска это подстроки во всех таблицах БД.
Извлечь все данные через IBE, запустить поиск по полученному файлу. Самое простое

а можно разом со всех таблиц? я по одной извлекаю и ищу, а их там 74
...
Рейтинг: 0 / 0
О протоколировании в Interbase 7.0 / логи транзакций
    #38823691
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chd,

Ну вы блин даете ;)

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
execute block (searchstr varchar(100)=?searchstr)
returns (SQL varchar(2048), WSQL varchar(2048), aresult varchar(10))
as
declare variable object_name varchar(32);
declare variable field_name varchar(32);
declare variable fn varchar(32);
declare variable longfield varchar(1024);
begin
  -- select all tables
  for select rdb$relations.rdb$relation_name
      from rdb$relations
      where rdb$relations.rdb$system_flag=0 and
            rdb$relations.rdb$view_blr is null
      into :object_name
  do begin
       SQL=''; WSQL='';
       for select trim(rdb$relation_fields.rdb$field_name)
           from rdb$relation_fields
           join rdb$fields on (rdb$fields.rdb$field_name=rdb$relation_fields.rdb$field_source and
                               rdb$fields.rdb$field_type in (14,37))
           where rdb$relation_fields.rdb$relation_name=:object_name
           into :field_name
        do begin
             SQL=SQL||field_name||',';
             fn=field_name;
             WSQL=WSQL||'('||field_name||' containing '''||searchstr||''') OR';
           end
        SQL=trim(',' from SQL);
        WSQL=trim('OR' from WSQL);
        if (WSQL<>'') then  -- skip tables without char/varchar field
           begin
             SQL='SELECT '||SQL||' FROM '||trim(object_name)||' WHERE '||WSQL;
             WSQL='SELECT FIRST 1 '||fn||' FROM '||trim(object_name)||' WHERE '||WSQL;
             longfield=NULL;
             execute statement WSQL into :longfield;
             if (longfield is not null) then ARESULT='OK'; else ARESULT='';
             suspend;
           end
     end
end



Имя таблицы сами опеределяйте ;)
...
Рейтинг: 0 / 0
О протоколировании в Interbase 7.0 / логи транзакций
    #38823721
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

EXECUTE BLOCK / STATEMENT в InterBase 7.0 - это пять
...
Рейтинг: 0 / 0
О протоколировании в Interbase 7.0 / логи транзакций
    #38823738
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

Блин, совсем из головы вылетело, что у него IB... ;(
...
Рейтинг: 0 / 0
О протоколировании в Interbase 7.0 / логи транзакций
    #38823789
chd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
chd
Гость
Нашел руками. Исправил. Всем спасибо! Всем +100 в карму!
...
Рейтинг: 0 / 0
О протоколировании в Interbase 7.0 / логи транзакций
    #38823901
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chdНашел руками. Исправил. Всем спасибо! Всем +100 в карму!а теперь триггер повесь на проверку и преобразования значения.
...
Рейтинг: 0 / 0
О протоколировании в Interbase 7.0 / логи транзакций
    #38823987
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterexecute block
дурачокъ. У них InterBase 7.0. Ты лучше пообживись на форуме, а потом уже начинай советы давать :-)
...
Рейтинг: 0 / 0
О протоколировании в Interbase 7.0 / логи транзакций
    #38824547
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мутить автоматизированное решение для разовой задачи - вот он, true coder's way :)
В качестве упражнения сойдет, но едва ли целесообразно.
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / О протоколировании в Interbase 7.0 / логи транзакций
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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