On-line: ort,гостей 2. Всего: 3 [подробнее..]
АвторСообщение



Пост N:14
Зарегистрирован:02.10.08
ссылка на сообщение  Отправлено:22.10.08 16:46.Заголовок:Мусор в базах...


Может кто сталкивался с такой гадостью:
Задачка работает у пользователей (все базы в shared режиме, но чаще всего на 1 компе у каждого). Базы без индексов не открываются. И иногда создается такое впечатление, что кто-то или что-то дописывает какой-то мусор (типа куски памяти, куски баз, куски индексов) в конец базы. ПРИЧЕМ! индексы при этом не трогаются, остаются красивыми. В итоге при следующем входе в программу все работает корректно, к базе добавляются строки, мусор не виден до первой переиндексации.
Понимаю, что сумбурно все объяснил, но может у кого какие мысли будут?
Пы.Сы. XHarbour 0.99.51 + FWH 2.5

Спасибо: 0 
ПрофильЦитата Ответить
Ответов -36 ,стр: 1 2 All [только новые]


moderator


Пост N:749
Зарегистрирован:20.02.11
ссылка на сообщение  Отправлено:20.01.16 14:06.Заголовок:Andrey пишет: Не пр..


Andrey пишет:

 цитата:
Не проходит .... Нужно делать 2 проверки: на IDZ > 0 и TSZ > 0



Задача для школьника , Проверок нужно делать столько, сколько потребуется чтобы поймать все , включая валидные значения ID, даты в полях и пр.
Не нули в значениях времени это не 100% гарантия .
Для первого твого скрина по этой теме пойдет, а дальше ....тут нет телепатов чтобы читать в астрале данные из твоей базы.



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N:4657
Зарегистрирован:12.09.06
ссылка на сообщение  Отправлено:20.01.16 15:41.Заголовок:Всё таки самый прост..


Всё таки самый простой способ это моё первое предложение.
по первому полю (AutoInc) последовательное копирование полей с запоминанием номера при разрыве записей
и продолжением копирования.
Ну и доп.проверки по другим полям.


Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N:750
Зарегистрирован:20.02.11
ссылка на сообщение  Отправлено:20.01.16 16:02.Заголовок:Andrey пишет: с зап..


Andrey пишет:

 цитата:
с запоминанием номера при разрыве записей


Обычно Autoinc работает примерно так
В заголовке базы храниться последнее значение и при добавлении записи оно инкрементируется.
Если в базе были удаления и паки - то разрывы в нумерации будут 100 % ( автоинк не восполняет дыры )
Andrey пишет:

 цитата:
проверки по другим полям.


Вот это единственный правильный способ.
Как вариант - можно не копировать а удалить мусор по условию и пакануть .


Спасибо: 0 
ПрофильЦитата Ответить



Пост N:185
Зарегистрирован:19.05.05
ссылка на сообщение  Отправлено:20.01.16 17:08.Заголовок:Какая-то подозритель..


Какая-то подозрительно регулярная порча базы. Портится, судя по скрину,
одно поле, хотя если данные портятся, то крякозябры должны быть во всех
полях, если связано с аварийным завершением. А посмотреть базу, именно
порченные места в WIN кодировке не пробовал ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N:4658
Зарегистрирован:12.09.06
ссылка на сообщение  Отправлено:20.01.16 19:10.Заголовок:nick_mi пишет: Порт..


nick_mi пишет:

 цитата:
Портится, судя по скрину,
одно поле, хотя если данные портятся, то крякозябры должны быть во всех полях, если связано с аварийным завершением.



Сбойные поля все кракозябы:


Смотреть нечего !

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N:5463
Зарегистрирован:17.05.05
ссылка на сообщение  Отправлено:20.01.16 22:33.Заголовок:Andrey пишет: Смотр..


Andrey пишет:

 цитата:
Смотреть нечего !



nick_mi пишет:

 цитата:
А посмотреть базу, именно
порченные места в WIN кодировке не пробовал ?



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N:4659
Зарегистрирован:12.09.06
ссылка на сообщение  Отправлено:21.01.16 11:22.Заголовок:Dima пишет: nick_mi..


Dima пишет:

 цитата:
nick_mi пишет:
цитата:
А посмотреть базу, именно
порченные места в WIN кодировке не пробовал ?



Последнее поле CHUMKVAR на картинке (номер дома, строка).
Ну и что там в ней смотреть ? Кто попробует расшифровать ?

И так везде в битых записях.
Нормальные записи вытащил и всё прекрасно читается.



Спасибо: 0 
ПрофильЦитата Ответить



Пост N:54
Зарегистрирован:24.02.11
ссылка на сообщение  Отправлено:22.01.16 21:35.Заголовок:А если тупо железо в..


А если тупо железо виновато? Винт сбойный или что-то в этом роде?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N:4664
Зарегистрирован:12.09.06
ссылка на сообщение  Отправлено:22.01.16 21:52.Заголовок:vvv пишет: А если т..


vvv пишет:

 цитата:
А если тупо железо виновато? Винт сбойный или что-то в этом роде?



Да тут много чего может быть. Починил базу, пока проблем нет.
Скорее всего "скачки" электроэнергии, мусор тогда и пишется.

Встречал захломлённую WinXP на которой периодически писался мусор в базы.
Переустановка ХР решило проблему.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N:231
Зарегистрирован:05.11.05
ссылка на сообщение  Отправлено:12.03.20 12:04.Заголовок:Andrey пишет: Вообщ..


Andrey пишет:

 цитата:
Вообще в нормальных прогах (типа БЭСТ или других) предусмотрено поле в базе с контрольной суммой записи.



А есть в Харборе стандартные функции для вычисления контрольной суммой записи?

Для контрольной суммы файла, я знаю, есть hb_md5file и hb_crc32. Или они не только для файлов?
Кстати, чем они отличаются? Я использовал только hb_md5file.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N:3923
Зарегистрирован:23.05.05
ссылка на сообщение  Отправлено:12.03.20 13:24.Заголовок:rvu пишет: А есть в..


rvu пишет:

 цитата:
А есть в Харборе стандартные функции для вычисления контрольной суммой записи?

Для контрольной суммы файла, я знаю, есть hb_md5file и hb_crc32. Или они не только для файлов?
Кстати, чем они отличаются? Я использовал только hb_md5file.



Стандартной функции нет, но ничего не мешает сделать свою
Мне самому когда-то пришлось при добавлении записи заполнять поле crc32, по конкатенации всех остальных полей записи, преобразованных в строку.
При чтении записи соответственно crc32 проверялось

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N:6602
Зарегистрирован:12.09.06
ссылка на сообщение  Отправлено:12.03.20 18:41.Заголовок:Можно ещё в базу сам..


Можно ещё в базу самым первым полем поставить
   AADD( aDbf , {"ID"      ,"+",  8, 0 } ) // автоинкремент

тогда при сбоях можно визуально в программе dbedit.exe видеть и удалять "мусор" из базы.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N:7173
Зарегистрирован:17.05.05
ссылка на сообщение  Отправлено:13.03.20 23:24.Заголовок:rvu пишет: А есть в..


rvu пишет:

 цитата:
А есть в Харборе стандартные функции для вычисления контрольной суммой записи?


Pasha пишет:

 цитата:
Стандартной функции нет, но ничего не мешает сделать свою


Сделал или подсказать ?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N:232
Зарегистрирован:05.11.05
ссылка на сообщение  Отправлено:15.03.20 09:14.Заголовок:Dima пишет: Сделал ..


Dima пишет:

 цитата:
Сделал или подсказать ?



Выяснил, что hb_crc32 можно не только для файлов использовать, но и для полей. Пока у себя не делал, но даже если бы и сделал, все равно с интересом бы посмотрел другой пример.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N:7174
Зарегистрирован:17.05.05
ссылка на сообщение  Отправлено:15.03.20 11:46.Заголовок:rvu Например так мо..


rvu
Например так можно
 
cc:=""
for i = 1 to fcount()
cc+=hb_valtoexp(fieldget( i )) // или что то другое вместо hb_valtoexp
next
hb_md5(cc) // или hb_crc32(сс)



Спасибо: 0 
ПрофильЦитата Ответить





Пост N:233
Зарегистрирован:05.11.05
ссылка на сообщение  Отправлено:15.03.20 11:57.Заголовок:А еще из функций CHE..


А еще из функций CHECKSUM() есть.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов -36 ,стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
-участник сейчас на форуме
-участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 28
Права: смайлыда,картинкида,шрифтыда,голосованиянет
аватарыда,автозамена ссылоквкл,премодерацияоткл,правканет