Автор | Сообщение |
|
| |
Пост N: 14
Зарегистрирован: 02.10.08
|
|
Отправлено: 22.10.08 16:46. Заголовок: Мусор в базах...
Может кто сталкивался с такой гадостью: Задачка работает у пользователей (все базы в shared режиме, но чаще всего на 1 компе у каждого). Базы без индексов не открываются. И иногда создается такое впечатление, что кто-то или что-то дописывает какой-то мусор (типа куски памяти, куски баз, куски индексов) в конец базы. ПРИЧЕМ! индексы при этом не трогаются, остаются красивыми. В итоге при следующем входе в программу все работает корректно, к базе добавляются строки, мусор не виден до первой переиндексации. Понимаю, что сумбурно все объяснил, но может у кого какие мысли будут? Пы.Сы. XHarbour 0.99.51 + FWH 2.5
|
|
|
Ответов - 36
, стр:
1
2
All
[только новые]
|
|
|
| |
Пост N: 749
Зарегистрирован: 20.02.11
|
|
Отправлено: 20.01.16 14:06. Заголовок: Andrey пишет: Не пр..
Andrey пишет: цитата: | Не проходит .... Нужно делать 2 проверки: на IDZ > 0 и TSZ > 0 |
| Задача для школьника , Проверок нужно делать столько, сколько потребуется чтобы поймать все , включая валидные значения ID, даты в полях и пр. Не нули в значениях времени это не 100% гарантия . Для первого твого скрина по этой теме пойдет, а дальше ....тут нет телепатов чтобы читать в астрале данные из твоей базы.
|
|
|
|
| постоянный участник
|
Пост N: 4657
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.01.16 15:41. Заголовок: Всё таки самый прост..
Всё таки самый простой способ это моё первое предложение. по первому полю (AutoInc) последовательное копирование полей с запоминанием номера при разрыве записей и продолжением копирования. Ну и доп.проверки по другим полям.
|
|
|
|
| |
Пост N: 750
Зарегистрирован: 20.02.11
|
|
Отправлено: 20.01.16 16:02. Заголовок: Andrey пишет: с зап..
Andrey пишет: цитата: | с запоминанием номера при разрыве записей |
| Обычно Autoinc работает примерно так В заголовке базы храниться последнее значение и при добавлении записи оно инкрементируется. Если в базе были удаления и паки - то разрывы в нумерации будут 100 % ( автоинк не восполняет дыры ) Andrey пишет: цитата: | проверки по другим полям. |
| Вот это единственный правильный способ. Как вариант - можно не копировать а удалить мусор по условию и пакануть .
|
|
|
|
| |
Пост N: 185
Зарегистрирован: 19.05.05
|
|
Отправлено: 20.01.16 17:08. Заголовок: Какая-то подозритель..
Какая-то подозрительно регулярная порча базы. Портится, судя по скрину, одно поле, хотя если данные портятся, то крякозябры должны быть во всех полях, если связано с аварийным завершением. А посмотреть базу, именно порченные места в WIN кодировке не пробовал ?
|
|
|
|
| постоянный участник
|
Пост N: 4658
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.01.16 19:10. Заголовок: nick_mi пишет: Порт..
nick_mi пишет: цитата: | Портится, судя по скрину, одно поле, хотя если данные портятся, то крякозябры должны быть во всех полях, если связано с аварийным завершением. |
| Сбойные поля все кракозябы: Смотреть нечего !
|
|
|
|
| |
Пост N: 5463
Зарегистрирован: 17.05.05
|
|
Отправлено: 20.01.16 22:33. Заголовок: Andrey пишет: Смотр..
Andrey пишет: nick_mi пишет: цитата: | А посмотреть базу, именно порченные места в WIN кодировке не пробовал ? |
|
|
|
|
|
| постоянный участник
|
Пост N: 4659
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.01.16 11:22. Заголовок: Dima пишет: nick_mi..
Dima пишет: цитата: | nick_mi пишет: цитата: А посмотреть базу, именно порченные места в WIN кодировке не пробовал ? |
| Последнее поле CHUMKVAR на картинке (номер дома, строка). Ну и что там в ней смотреть ? Кто попробует расшифровать ? И так везде в битых записях. Нормальные записи вытащил и всё прекрасно читается.
|
|
|
|
| |
Пост N: 54
Зарегистрирован: 24.02.11
|
|
Отправлено: 22.01.16 21:35. Заголовок: А если тупо железо в..
А если тупо железо виновато? Винт сбойный или что-то в этом роде?
|
|
|
|
| постоянный участник
|
Пост N: 4664
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.01.16 21:52. Заголовок: vvv пишет: А если т..
vvv пишет: цитата: | А если тупо железо виновато? Винт сбойный или что-то в этом роде? |
| Да тут много чего может быть. Починил базу, пока проблем нет. Скорее всего "скачки" электроэнергии, мусор тогда и пишется. Встречал захломлённую WinXP на которой периодически писался мусор в базы. Переустановка ХР решило проблему.
|
|
|
|
| |
Пост N: 231
Зарегистрирован: 05.11.05
|
|
Отправлено: 12.03.20 12:04. Заголовок: Andrey пишет: Вообщ..
Andrey пишет: цитата: | Вообще в нормальных прогах (типа БЭСТ или других) предусмотрено поле в базе с контрольной суммой записи. |
| А есть в Харборе стандартные функции для вычисления контрольной суммой записи? Для контрольной суммы файла, я знаю, есть hb_md5file и hb_crc32. Или они не только для файлов? Кстати, чем они отличаются? Я использовал только hb_md5file.
|
|
|
|
| Администратор
|
Пост N: 3923
Зарегистрирован: 23.05.05
|
|
Отправлено: 12.03.20 13:24. Заголовок: rvu пишет: А есть в..
rvu пишет: цитата: | А есть в Харборе стандартные функции для вычисления контрольной суммой записи? Для контрольной суммы файла, я знаю, есть hb_md5file и hb_crc32. Или они не только для файлов? Кстати, чем они отличаются? Я использовал только hb_md5file. |
| Стандартной функции нет, но ничего не мешает сделать свою Мне самому когда-то пришлось при добавлении записи заполнять поле crc32, по конкатенации всех остальных полей записи, преобразованных в строку. При чтении записи соответственно crc32 проверялось
|
|
|
|
|
| постоянный участник
|
Пост N: 6602
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.03.20 18:41. Заголовок: Можно ещё в базу сам..
Можно ещё в базу самым первым полем поставить AADD( aDbf , {"ID" ,"+", 8, 0 } ) // автоинкремент тогда при сбоях можно визуально в программе dbedit.exe видеть и удалять "мусор" из базы.
|
|
|
|
| |
Пост N: 7173
Зарегистрирован: 17.05.05
|
|
Отправлено: 13.03.20 23:24. Заголовок: rvu пишет: А есть в..
rvu пишет: цитата: | А есть в Харборе стандартные функции для вычисления контрольной суммой записи? |
| Pasha пишет: цитата: | Стандартной функции нет, но ничего не мешает сделать свою |
| Сделал или подсказать ?
|
|
|
|
| |
Пост N: 232
Зарегистрирован: 05.11.05
|
|
Отправлено: 15.03.20 09:14. Заголовок: Dima пишет: Сделал ..
Dima пишет: Выяснил, что hb_crc32 можно не только для файлов использовать, но и для полей. Пока у себя не делал, но даже если бы и сделал, все равно с интересом бы посмотрел другой пример.
|
|
|
|
| |
Пост 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(сс)
|
|
|
|
| |
Пост N: 233
Зарегистрирован: 05.11.05
|
|
Отправлено: 15.03.20 11:57. Заголовок: А еще из функций CHE..
А еще из функций CHECKSUM() есть.
|
|
|
Ответов - 36
, стр:
1
2
All
[только новые]
|
|