|
|
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
Сегодня столкнулся с такой вот проблемой: При добавлении записи вылетела ошибка, что нельзя дублировать значение Primary key. Зашел я в базу, а там: значение primary key у последней вставленной записи и значение генератора различаются почти на 20, т.е. значение генератора на 20 меньше чем значение primary key у последней вставленной записи. И такая же фигня еще в 2-х таблицах. значение primary key генерится с помощью FIBPlus Сервер - FireBird 1.5.0.4306 ОС - Windows 98 Вопрос: кто-нибудь знает отчего такое может случиться и как вообще могли добавляться записи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 10:55:32 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
Скорее всего был откат генератора, либо значения PK были присвоены искуственно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 11:05:03 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
2 Posco "искусственно " - в смысле не в программе а ручками например в IBExpert ? если так, то в принципе не может такого быть, юзеры так не умеют :) а в каких это случаях может быть откат генератора? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 11:10:21 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
а в каких это случаях может быть откат генератора? SET GENERATOR <Ваш генератор> TO <Новое значение>, И такая же фигня еще в 2-х таблицах ...и так еще для двух генераторов :) ...юзеры не умеют. Возможно было перемещение данных из другой системы, или что-то подобное. Чудес не бывает, а если и бывают, то тут наверное у разработчиков FireBird 1.5.0.4306 нужно спрашивать в чём дело ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 11:46:00 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
Posco а в каких это случаях может быть откат генератора? SET GENERATOR <Ваш генератор> TO <Новое значение>, И такая же фигня еще в 2-х таблицах ...и так еще для двух генераторов :) ...юзеры не умеют. Возможно было перемещение данных из другой системы, или что-то подобное. Чудес не бывает, а если и бывают, то тут наверное у разработчиков FireBird 1.5.0.4306 нужно спрашивать в чём дело ;) Генераторы в новое значение не устанавливались, и вообще логикой приложения измение значения генераторов не предусмотрено Данные ниоткуда не перемещались, а заводились с нуля, с момента эксплуатации приложения. Короче - чудеса, да и только. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 11:49:29 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
А где наращивается значение генератора ? И кто его инициирует ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 11:58:57 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
JohnmenА где наращивается значение генератора ? И кто его инициирует ? Для автоинкремента значения генератора использутся компонент pFIBDataSet. Он сам получает значение от генератора и естественно при этом оно увеличивается. Приложение где-то с месяц уже работает, и вот на тебе. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 12:12:22 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
>Senator Тогда предположение только одно: Где-то, кто-то/что-то пишет в таблицу не наращивая значения. Напр.другой компонент pFIBDataSet, в др.программе; "руками" добавили записей в тбл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 12:16:29 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
Johnmen>Senator Тогда предположение только одно: Где-то, кто-то/что-то пишет в таблицу не наращивая значения. Напр.другой компонент pFIBDataSet, в др.программе; "руками" добавили записей в тбл. руками точно никто писать не может - просто нет там соответсвующих инструментов, а остальное - будем проверять, но все-таки - месяц все работало прекрасно, и вдруг такое и еще: каждый день делались бэкапы, и если восстановить предпоследний бэкап, то в базе все нормально, а вот в последнем фигня такая получается :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 12:31:55 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
Кстати, я не совсем прав. Там же ещё PK на поле. Тогда однозначно - кто-то/что-то подправил значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 12:39:33 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
JohnmenКстати, я не совсем прав. Там же ещё PK на поле. Тогда однозначно - кто-то/что-то подправил значение. ну а если никто руками не мог подправить (я в этом на 100% уверен), то что же тогда еще может быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 12:47:08 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
Senator JohnmenКстати, я не совсем прав. Там же ещё PK на поле. Тогда однозначно - кто-то/что-то подправил значение. ну а если никто руками не мог подправить (я в этом на 100% уверен), то что же тогда еще может быть? Сбой по питанию, зависание сервера и т.д. Генераторы в этом смысле самые уязвимые, т.к. сброс их значений на диск идет не вместе с данными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 14:22:04 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
>Senator Ещё маловероятное предположение - нарушения на странице генераторов. Возможные причины - постом выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 15:59:30 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
Такая фигня у меня случилась после того как вырубили электричество. Видимо и у тебя был какой-то сбой с питанием. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 17:55:13 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
А всё потому, что надо было Forced Writes = True выставить :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 18:12:19 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
JohnmenА всё потому, что надо было Forced Writes = True выставить :) В том то и проблема, что генераторы как бы под это не подпадают, данные то записались, а генераторы нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 18:19:31 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
>s999 Что значит "не подпадают" ? А если не пишем данные, а только знач.генераторов, тогда что ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 18:38:46 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
JohnmenЧто значит "не подпадают" ? А если не пишем данные, а только знач.генераторов, тогда что ? Не знаю, может в FB это поправили, но проблема была. Значения генераторов "не форсятся" на диск, а "сидят" в памяти, а на диск попадают по "своим правилам". Таким образом, возможна ситуация когда вставленные записи уже на диске, а "дернутые генераторы" туда попасть еще не успели. А пишем данные или только генераторы дергаем, здесь это непринципиально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 18:54:42 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
А что тогда транзакция? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2004, 07:00:04 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
2 ENN: при чем здесь транзакция? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2004, 07:02:47 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
Удивительно что никто так ничего и не сказал путного :-) На 97% заложусь было так: 1. Клиент пишет новые данные с дерганьем генератора 2. Данные сбрасываются в базу 3. Вырубается свет Самое интересное что страница генераторов по FW=On в 4306 сбрасывается по каким-то другим правилам (честно не помню точно по каким, хотя LOA полгода назад в конференции расписывал это дело). Короче фокус именно в том что страница генераторов пишется именно ПОЗЖЕ страницы данных (!!!). Вот тебе и глюк с генераторами. Тогда же во время обсуждения данной проблемы было выработано решение что сделать с генераторами и данной проблемой. Не знаю как в Yaffil, я за ним просто не слежу но думаю что там это тоже поправлено, а в FireBird 1.5.1 4481 эта проблема точно поправлена. Так что как говорится "просто переставь сервак". :-) P.S. Блин, и поменяй W98 на W2K!! Не думаю что это машина ниже Селерона и у нее мозгов меньше 128. Хотя могу и ошибаться однако. А то она тебе столько накрутит с базой что потом устанешь боротся просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2004, 07:43:26 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
Извиняюсь по поводу фразы про путность. Спросонья некоторые сообщения пропустил :-) Сказили путного много, и даже про то что я описал сказал s999. И все-таки дабы избежать проблем - переставь версию FB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2004, 07:47:50 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
JohnmenА всё потому, что надо было Forced Writes = True выставить :) Однако, Forced Writes = True Наверное s999 и andyshark правы, а сервак я уже переставил :) Спасибо всем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2004, 08:43:58 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
При FW=ON кеш сбрасывается на диск по коммиту транзакции. Т.к. генераторы лежат вне контроля транзакций, то их страницы могут быть записаны на диск несколько позже страниц данных (на это влияют особенности использования данного генератора из нескольких конкурентных транзакций). Соотв-но, при аномальном завершении процесса сервера часть информации по генераторам может быть потеряна. Начиная с FB 1.5.1 эта проблема устранена (то же самое относится к последним сборкам Yaffil) - теперь страницы генераторов всегда сбрасываются на диск не позднее данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2004, 10:38:32 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
>dimitr >теперь страницы генераторов всегда сбрасываются на диск не позднее данных. Т.е. раньше ? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2004, 10:58:55 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
Не придирайся к словам ;-) Но на самом деле может быть и раньше: 1. Старт транзакции А (не read-only) 2. Старт транзакции Б 3. Модификация транзакцией Б данных с использованием генератора 4. Коммит транзакции А -> сброс страницы генератора на диск 5. Коммит транзакции Б -> сброс измененных страниц данных на диск В случае отсутствия конкурентных транзакций страницы генератора запишутся одновременно с измененными страницами данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2004, 11:24:38 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
Как ни крути, а ситуация неприятная, но, к сожалению, возможная. Сделай процедуру восстановления, например: CREATE PROCEDURE RESET_GENERATORS AS DECLARE VARIABLE NEW_ID BIGINT; begin Код: plaintext 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. Вот для нее скрипт ErWin макроса: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Предполагается наличие UPD с именем generate_id (типа List, значение по умолчанию ~yes,no) для каждой таблички на логическом уровне, и (в другом скрипте) генерация генераторов (пардон :) и соотв. триггеров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2004, 14:18:54 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
2mv Хм, я вот только совсем не понимаю - зачем создавать лишний геморой? По русски сказано что проблема устранена. Кроме того как ты планируешь запускать эту процедуру - по кнопке или при запуске программы? В первом случае ошибка все-равно появится, во втором возможны проблемы другого рода, когда работает процедура, а в этот момент происходит запуск одной копии программы в сети. И что прикажете делать? может есть смысл все-таки оставить серверу серверное? А баги ловить и докладывать о них куда надо? Если честно после рапорта о сбое в генераторах исправление стало доступно буквально через пару недель, и это с учетом того что еще шли споры по поводу того какой из механизмов сохранения генераторов реализовать (было три варианта). И даже голосование было сделано маленькое :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2004, 17:13:22 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
2 andyshark Эту процедуру я думаю запускать чужими руками, когда мне звонят тетки, и читают вслух тескст знакомого всем сообщения об ошибках. Ну, вот я и скажу им, как запустить эту лабуду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2004, 12:47:10 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
2mv У меня ситуация со сбоем генераторов была всего 2 раза за год. После первого раза отрапортовал в конфу, а когда второй раз получился в другом месте я им прогу скинул по мылу которая генераторы нарастила на +10. Скоро поменяю сервак и забуду что такая бага была :-) поменяй теткам сервак и скажи что ты сделал. Они тебе по гроб жизни благодарны будут если такое хоть раз 5 случалось и они помнят. Заодно сделаешь вид что работаешь :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2004, 17:39:28 |
|
||
|
глюк с генератором
|
|||
|---|---|---|---|
|
#18+
Тетки у меня нормальные. У меня сисадмины приморожены - отторможены. Когда им кажется, что сервак "подвис" (типа - на клавиши не быстро реагирует), могут и ресет нажать. Невзирая на количество живых коннектов к базе, и то, что у клиентов никаких проблем. И никакие тут UPS не помогут. А сбой генераторов уменя тоже, второй раз за 1,5 года. Причем на моих глазах все и произошло, когда такую грамотную перезагрузку делали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2004, 17:52:49 |
|
||
|
|

start [/forum/search_topic.php?author=jvp_corp&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
160ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 379ms |
| total: | 640ms |

| 0 / 0 |
