Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ошибка записи в базу I/O error 32 / 25 сообщений из 26, страница 1 из 2
12.07.2016, 18:59
    #39272635
petrovitch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка записи в базу I/O error 32
Здравствуйте,
подскажите, что может значить такая ошибка "I/O error 32" при записи в базу?
...
Рейтинг: 0 / 0
12.07.2016, 19:08
    #39272638
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка записи в базу I/O error 32
petrovitch,

The process cannot access the file because it is being used by another process.
...
Рейтинг: 0 / 0
12.07.2016, 19:11
    #39272640
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка записи в базу I/O error 32
И причём тут ошибки рантайма Delphi ?
...
Рейтинг: 0 / 0
12.07.2016, 19:17
    #39272645
petrovitch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка записи в базу I/O error 32
hvlad,

Наверное потому, что программа написанная на delphi работает с базой, с этой же базой работают еще несколько похожих программ и сайт.
Эта система работает около 5 лет, а проблема возникла сейчас, сегодня.
...
Рейтинг: 0 / 0
12.07.2016, 19:20
    #39272646
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка записи в базу I/O error 32
petrovitchа проблема возникла сейчас, сегодня.
А с чего ты взял, что эта проблема вообще как-то связана с базой? Процитированная ошибка,
как уже сказали, не порождается Firebird.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.07.2016, 19:27
    #39272649
petrovitch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка записи в базу I/O error 32
Dimitry Sibiryakov,

Вот такой код

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
try
        with query do
        begin
          sql.Clear;
          sql.Add('INSERT INTO Data' +
              '(test )' + ' values ' + '(:test)');


          AddToLog('Дата %d', [data^.UnixTime]);

          tdt := (data^.UnixTime / 86400) + 25569;

          ParamByName('test').AsDateTime := Now;
          ExecQuery;
        end;
      end; 

    end;

  except
    on E: Exception do
      AddToLog('%d: Ошибка сохранения данных %s', [data^.DeviceID, E.Message]);
  end;



возвращает Ошибка сохранения данных I/O error 32
...
Рейтинг: 0 / 0
12.07.2016, 19:29
    #39272650
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка записи в базу I/O error 32
ну и почему это firebird, а не какой-нибудь Advantage/NexuDB//SQLite/BDE/etc ?
...
Рейтинг: 0 / 0
12.07.2016, 19:30
    #39272652
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка записи в базу I/O error 32
а в общем - брать SysInternals/Microsoft Process Monitor и смотреть на каком именно файлде эта ошибка вылазит.

Потом брать Process Explorer и смотреть кто ещё этот файл держит
...
Рейтинг: 0 / 0
12.07.2016, 19:33
    #39272656
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка записи в базу I/O error 32
petrovitch
Код: pascal
1.
          AddToLog('Дата %d', [data^.UnixTime]);


возвращает Ошибка сохранения данных I/O error 32

ну и при чём тут вобще SQL ??????

petrovitch
Код: pascal
1.
          tdt := (data^.UnixTime / 86400) + 25569;



вот это вычисление, результаты которого выбрасываются на помойку, тоже доставляет, да.
...
Рейтинг: 0 / 0
12.07.2016, 19:33
    #39272657
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка записи в базу I/O error 32
petrovitchвозвращает Ошибка сохранения данных I/O error 32

У Firebird тексты ошибок гораздо длиннее. И ты врёшь, это не весь код: begin-end не
сбалансированы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.07.2016, 19:58
    #39272663
petrovitch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка записи в базу I/O error 32
Dimitry Sibiryakov,

в процедуру передается rb, ниже по коду инкремент i, параметров в запросе больше
Код: pascal
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.
  try
    i := 0;
    while i < length(rb) do
    begin
      if ((header^.Atype and 56)>0 )  then
      begin

        with query do
        begin
          sql.Clear;
          sql.Add('INSERT INTO Data' +
              '(test )' + ' values ' + '(:test)');


          AddToLog('Дата %d', [data^.UnixTime]);

          tdt := (data^.UnixTime / 86400) + 25569;

          ParamByName('test').AsDateTime := Now;
          ExecQuery;
        end;
      end; 

    end;

  except
    on E: Exception do
      AddToLog('%d: Ошибка сохранения данных %s', [data^.DeviceID, E.Message]);
  end;
...
Рейтинг: 0 / 0
12.07.2016, 20:22
    #39272670
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка записи в базу I/O error 32
petrovitchwith query do
query - что за компонент?
а вообще - см. 19401584
...
Рейтинг: 0 / 0
12.07.2016, 20:29
    #39272672
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка записи в базу I/O error 32
Ставлю на то, что эту ошибку выкидывает AddToLog. Ты в логе перед ошибкой видишь строчку
'Дата %d'?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.07.2016, 20:31
    #39272674
petrovitch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка записи в базу I/O error 32
kdv,

спасибо, попробую разобраться с Microsoft Process Monitor.
...
Рейтинг: 0 / 0
12.07.2016, 20:33
    #39272675
petrovitch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка записи в базу I/O error 32
Dimitry Sibiryakov,

пока не могу посмотреть, не могу зайти на сервер.
...
Рейтинг: 0 / 0
12.07.2016, 20:41
    #39272679
petrovitch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка записи в базу I/O error 32
kdv,

query: TpFIBQuery;
...
Рейтинг: 0 / 0
12.07.2016, 22:37
    #39272716
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка записи в базу I/O error 32
petrovitch
Код: pascal
1.
2.
3.
4.
5.
6.
  try
...
  except
    on E: Exception do
      AddToLog('%d: Ошибка сохранения данных %s', [data^.DeviceID, E.Message]);
  end;

Открой для себя разные типы исключений
...
Рейтинг: 0 / 0
13.07.2016, 03:42
    #39272751
Супер
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка записи в базу I/O error 32
Ariochвычисление, результаты которого выбрасываются на помойку, тоже доставляет, да.
В этом коде каждая строчка доставляет.
Вот это
Код: pascal
1.
2.
3.
          sql.Clear;
          sql.Add('INSERT INTO Data' +
              '(test )' + ' values ' + '(:test)');

феерично как минимум дважды:
во первых, потому, что в цикле.
во вторых, склеивание текста запроса из констант - вообще супер.
короче, аффтар, пеши есчо.
По ошибке - Dimitry Sibiryakov прав - 99.9% вероятность что это AddToLog.
...
Рейтинг: 0 / 0
13.07.2016, 09:27
    #39272800
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка записи в базу I/O error 32
СуперВот это
Код: pascal
1.
2.
3.
          sql.Clear;
          sql.Add('INSERT INTO Data' +
              '(test )' + ' values ' + '(:test)');

феерично как минимум дважды:
во первых, потому, что в цикле.
во вторых, склеивание текста запроса из констант - вообще супер.


Ну тут не все так страшно - параметр есть? Есть. А то что запрос "слеен" - дело личных предпочтений - может так автору удобней.
...
Рейтинг: 0 / 0
13.07.2016, 09:38
    #39272806
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка записи в базу I/O error 32
DarkMaster,

параметр то есть. Вот только грохать текст запроса и собирать его заново каждый раз в цикле как то не комильфо. Тем более что запрос не препариуется единожды, так что смысл тут от параметра разве что в защите от инъекций.
...
Рейтинг: 0 / 0
13.07.2016, 09:52
    #39272824
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка записи в базу I/O error 32
Симонов Денис,

Я только про "склеивание". Все остальное - УГ.
...
Рейтинг: 0 / 0
13.07.2016, 10:31
    #39272854
ошибка записи в базу I/O error 32
DarkMasterто что запрос "слеен" - дело личных предпочтений - может так автору удобней.Оно конечно...
Тогда уж клеить так клеить:
Код: pascal
1.
2.
          sql.Add('I'+'N'+'S'+'E'+'R'+'T'+' '+'I'+'N'+'T'+'O'+' '+'D'+'a'+'t'+'a' +
              '('+'t'+'e'+'s'+'t'+' '+')' + ' '+'v'+'a'+'l'+'u'+'e'+'s'+' ' + '('+':'+'t'+'e'+'s'+'t'+')');
...
Рейтинг: 0 / 0
13.07.2016, 11:13
    #39272891
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка записи в базу I/O error 32
Hello, Клей Момент!
You wrote on 13 июля 2016 г. 11:13:14:

Клей Момент> Тогда уж клеить так клеитьклеить лучше бап.
можно изолентой.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
13.07.2016, 11:32
    #39272914
ошибка записи в базу I/O error 32
...
Рейтинг: 0 / 0
13.07.2016, 14:28
    #39273123
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка записи в базу I/O error 32
СуперВ этом коде каждая строчка доставляет.
Вот это
Код: pascal
1.
2.
3.
          sql.Clear;
          sql.Add('INSERT INTO Data' +
              '(test )' + ' values ' + '(:test)');

феерично как минимум дважды:
во первых, потому, что в цикле.
во вторых, склеивание текста запроса из констант - вообще супер.


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

В цикл это засунуть конечно круто - думаю раньше запрос слегка менялся, вместе параметра константу засовывали прямо текстом в запрос. Потом узнали про существование параметров, но вытащить получившийся инвариант из цикла не догадались.

Ещё радует лишние вызховы Clear/Add вместо банального SQL.Text := '.....';

По ошибке - Dimitry Sibiryakov прав - 99.9% вероятность что это AddToLog.

ну дык я то же самое сказал

автор вероятно просто думает, что ВСЕ процедуры внутри with-блока могут относиться только к Query....
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ошибка записи в базу I/O error 32 / 25 сообщений из 26, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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