Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.09.05;
Скачать: [xml.tar.bz2];

Вниз

Не добавляется информация в БД   Найти похожие ветки 

 
СержК   (2010-06-08 09:09) [0]

Мастера подскажите.
Лет семь назад  была написана программа на D7 (БД - InterBase 5.6, дотуп к БД организован через BDE Administrator).
Это ПО (сама программа, сервер IB) были установлены на сервере (2 интеловских 2-х ядерных процессора) - все работало без проблемм много лет.
Но по причине поломки железяки пришлось все переустановить на другое железо (четырехядерный Xeon).

Стал замечать глюки. После запуска программы (она крутится постоянно на сервере там же где установлен IB) все работае отлично. Там организовано в цикле добавление информации в БД. Так вот - через какое-то время информация в БД перестает добавляться. После перезапуска программы все работает,а через какое-то время глюки опять повторяются.
Огромная просьба - подскажите в чем проблемма?


 
sniknik ©   (2010-06-08 09:20) [1]

знаменитая ошибка 17-й строки... осложненная отсутствием логов и скрытием ексептов, похоже. и возможно завязанная на версию IB, системы и взаимодействие их с BDE.


 
СержК   (2010-06-08 09:30) [2]

Как решить это...???


 
brother ©   (2010-06-08 09:31) [3]

> Как решить это...???

в [1] намек на отсутствие уточняющей информации и кода ;)


 
sniknik ©   (2010-06-08 09:34) [4]

> Как решить это...???
категория ошибок из 17-строки нерешаема в принципе... или принципиально, что для автора несущественно.


 
СержК   (2010-06-08 09:41) [5]

Привожу код: Все это выполняется в цикле

QueryCloseDefect.ParamByName("pDATE_REMONT").AsDateTime:=StrToDate(Str_Data_Remo nt);
QueryCloseDefect.ParamByName("pFIO_REMONT").AsBlob:=Str_FIO_remont;
QueryCloseDefect.ParamByName("pTEXT_REMONT").AsBlob:=Str_TEXT_Remont;
QueryCloseDefect.ParamByName("pNAME_TXT_FILE_DEFECT").AsString:=Trim(Str_Name_Cl ose_File);

Database1.StartTransaction;
QueryCloseDefect.ExecSQL;
if Database1.InTransaction then Database1.Commit;

Вот сам запрос:

Update Gurnaldefect Set

DATE_REMONT = :pDATE_REMONT,
FIO_REMONT = :pFIO_REMONT,
TEXT_REMONT = :pTEXT_REMONT

Where NAME_TXT_FILE_DEFECT=:pNAME_TXT_FILE_DEFECT


 
sniknik ©   (2010-06-08 10:00) [6]

> через какое-то время информация в БД перестает добавляться.

> Вот сам запрос:
> Update Gurnaldefect Set
> ...
я тебя наверное разочарую, но она тут совершенно правильно не добавляется...

p.s. еще один такой пост и из категории "в  принципе"(что изменимо) вопрос перейдет в категорию "принципиально".


 
СержК   (2010-06-08 10:19) [7]

Постараюсь описать проблеммму подробнее.
Действительно я привел код на изменение записи в таблице БД (существует конечно и на добавление записи). Дело в следующем - после запуска программы через какое-то время перестает добавляться ЛЮБАЯ информация в БД (как изменение существующей записи в таблице БД, так и добавление новой записи). Все это проявилось при переходе на новое железо.

Да вот еще..
С данной БД работают несколько пользователей на своих рабочих станциях со своими клиентскими приложениями. У них проблемм НЕТ (добавляют, изменяют, удаляют).


 
brother ©   (2010-06-08 10:23) [8]

ну, это уже неуважение...
мы всю информацию из тебя клещами будем тянуть?
оказывается она еще и сетевая... и там все гуд...


 
RWolf ©   (2010-06-08 10:39) [9]

базу на ошибки проверяли?


 
Anatoly Podgoretsky ©   (2010-06-08 10:40) [10]


> СержК   (08.06.10 09:41) [5]

Никаким добавлением и не пахнет, нет задачи для решения.


 
Sergey13 ©   (2010-06-08 10:41) [11]

> [7] СержК   (08.06.10 10:19)
> С данной БД работают несколько пользователей на своих рабочих
> станциях со своими клиентскими приложениями. У них проблемм
> НЕТ (добавляют, изменяют, удаляют).

> [0] СержК   (08.06.10 09:09)
> дотуп к БД организован через BDE Administrator).

Неужели трудно выявить разницу? Если сервер и БД одни и те-же, программа одинакова, то очевидно, что разные какие-то настройки. Настройки тут, насколько я понял, возможны только в БДЕ. Сравни их на сервере и на клиентских станциях. Скорее всего проблема в них.


 
СержК   (2010-06-08 10:44) [12]

Да она сетевая. Время от времени работают 5-15 пользователей без проблемм в течении нескольких лет. И сейчас у них все отлично.

Проблемма возникла ТОЛЬКО с маленькой програмкой которая крутится локально там же где установлен IB сервер. Через некоторое время перестает добавляться/изменяться любая информация в БД. После перезапуска этой "маленькой" проги какое-то время все нормально (несколько часов) потом опять те же  грабли...


 
СержК   (2010-06-08 10:49) [13]

Может я чего-то не понимаю... Если проблемма в настройках BDE, то почему кокое-то время после запуска все работает отлично и только через несколько часов начинается...


 
Sergey13 ©   (2010-06-08 11:00) [14]

> [13] СержК   (08.06.10 10:49)

Ну так сравни, найди отличия и почитай про эти отличия.


 
СержК   (2010-06-08 11:09) [15]

Да нет этих отличий - уже сравнил.


 
Sergey13 ©   (2010-06-08 11:26) [16]

> [15] СержК   (08.06.10 11:09)

Попробуй запустить "серверную" программу на клиентской машине.


 
Anatoly Podgoretsky ©   (2010-06-08 11:27) [17]

> СержК  (08.06.2010 10:44:12)  [12]

Программу надо переписать.


 
sniknik ©   (2010-06-08 11:30) [18]

настройки при поиске глюков вторичны, первичны сообщения от эксептов в момент между "все работает" и "все поломалось".


 
12 ©   (2010-06-08 11:31) [19]

логгируйте действия
после каждой команды серверу - в лог, время, что послано, что вернулось


 
Anatoly Podgoretsky ©   (2010-06-08 11:38) [20]

> sniknik  (08.06.2010 11:30:18)  [18]

Это хорошие "все поломалось" исключения


 
СержК   (2010-06-08 11:46) [21]

"Серверная" программа на клиентской машине работает нормально. На своей машине (в отладчике в том числе) все отлично.

Предполагаю что глючит BDE??? Кстати BDE критичен к железу?
Может переписать "серверную" програмку без использования BDE?


 
СержК   (2010-06-08 11:56) [22]


> sniknik ©   (08.06.10 11:30) [18]
> настройки при поиске глюков вторичны, первичны сообщения
> от эксептов в момент между "все работает" и "все поломалось".
>

как мне получить эту информацию на примере вышеприведенного кода?


 
sniknik ©   (2010-06-08 11:58) [23]

> Может переписать "серверную" програмку без использования BDE?
Anatoly Podgoretsky ©   (08.06.10 11:27) [17]
> Программу надо переписать.

зачем уточнения?
только переписать нужно грамотно, с BDE, без BDE это дело десятое.


 
sniknik ©   (2010-06-08 12:00) [24]

> как мне получить эту информацию
try except ... + возможно Win32Check


 
СержК   (2010-06-08 12:18) [25]


> sniknik ©   (08.06.10 12:00) [24]
> > как мне получить эту информацию
> try except ... + возможно Win32Check


Буду очень признателен если подскажите как все это применить к данному коду:

QueryCloseDefect.ParamByName("pDATE_REMONT").AsDateTime:=StrToDate(Str_Data_Remo  nt);
QueryCloseDefect.ParamByName("pFIO_REMONT").AsBlob:=Str_FIO_remont;
QueryCloseDefect.ParamByName("pTEXT_REMONT").AsBlob:=Str_TEXT_Remont;
QueryCloseDefect.ParamByName("pNAME_TXT_FILE_DEFECT").AsString:=Trim(Str_Name_Cl  ose_File);

Database1.StartTransaction;
QueryCloseDefect.ExecSQL;
if Database1.InTransaction then Database1.Commit;


 
Anatoly Podgoretsky ©   (2010-06-08 12:19) [26]

> СержК  (08.06.2010 11:46:21)  [21]

Конечно, всегда виновата система, а не программист.


 
Anatoly Podgoretsky ©   (2010-06-08 12:30) [27]

> СержК  (08.06.2010 12:18:25)  [25]

Твой код надо выбросить.


 
СержК   (2010-06-08 12:33) [28]


> Anatoly Podgoretsky ©   (08.06.10 12:30) [27]
> > СержК  (08.06.2010 12:18:25)  [25]
>
> Твой код надо выбросить.


Согласен подскажите правильный код.


 
RWolf ©   (2010-06-08 13:18) [29]


> Anatoly Podgoretsky ©   (08.06.10 12:30) [27]

а что не так в [25] ?


 
12 ©   (2010-06-08 14:09) [30]

как то так

try

> QueryCloseDefect.ParamByName("pDATE_REMONT").AsDateTime:
> =StrToDate(Str_Data_Remo  nt);
> QueryCloseDefect.ParamByName("pFIO_REMONT").AsBlob:=Str_FIO_remont;
>
> QueryCloseDefect.ParamByName("pTEXT_REMONT").AsBlob:=Str_TEXT_Remont;
>
> QueryCloseDefect.ParamByName("pNAME_TXT_FILE_DEFECT").AsString:
> =Trim(Str_Name_Cl  ose_File);
>
> Database1.StartTransaction;
> QueryCloseDefect.ExecSQL;
> if Database1.InTransaction then Database1.Commit;

except
 on E:Exception do
 begin
    E.Message := E.Message + #13#10 + " Вот тута пошла фигня.. ";
    Raise;
 end;
end;

Компонент TApplicationEvents
procedure TfrmEditRequest.ApplicationEvents1Exception(Sender: TObject; E: Exception);
begin
 InitLog(E,true);
end;

Procedure InitLog(E:Exception; Show:boolean = false);
Begin
 if frmLog = nil then frmLog := TfrmLog.Create(application);
 frmLog.memLog.Lines.Add("Произошла ошибка: " + E.ClassName + "/" + E.Message);
 if Show then frmLog.Show;
End;


 
СержК   (2010-06-08 14:21) [31]


> 12 ©   (08.06.10 14:09) [30]


Попробую. Будут результаты - отпишусь.
Спасибо.


 
Anatoly Podgoretsky ©   (2010-06-08 14:23) [32]


> а что не так в [25] ?

Хотя бы отсутствие try except



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.09.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.004 c
15-1276150830
gog
2010-06-10 10:20
2010.09.05
Поблема инстоляции/запуска


15-1275375624
12
2010-06-01 11:00
2010.09.05
Хочу странного - вертикальный dbgrid. Есть такой?


15-1276163521
bss
2010-06-10 13:52
2010.09.05
Работа TDateTime в отрицательном диапазоне


15-1276193680
AKE
2010-06-10 22:14
2010.09.05
Я забыл можно ли объявлять функцию внутри функции?


2-1276153349
Sergey2
2010-06-10 11:02
2010.09.05
длина запроса в AdoQuery.sql.text





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский