|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
PolesovТогда как объяснить, что мне в файле БД обычном фар-ом удалось найти занчение текстового гуида?Если я правильно путаю, то сравнивается размер сжатой и нормальной записи, и если сжатая больше, пишется без сжатия. Почему-то я так помню, искать лень, поправьте, коллеги. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2016, 19:11 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
PolesovВот сейчас проделаю все операции на копии БД, содержащей ошибку: GFIX: Код: powershell 1. 2.
Где соотв. сообщение из firebird.log ? PolesovЧто я делаю не так?Мне отсюда не видно. Например я понятия не имею - что такое PK_T, какое отношение он имеет к T и где у тебя INT, а где GUID. Давай сюда DDL таблицы, индексов и сообщение из firebird.log ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2016, 19:13 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
hvladОшибку выдаст commit. Правда, если выполнять это в isql, то он сделает коммит сам (если ему явно не запретить) и будет казаться, что ошибку выдал ALTER Делал и в isql, и в ibe - никаких ошибок не было. Ни до commit, ни после. Готов рассмотреть возможность передачи экземпляра БД. Если удалить данные из других таблиц, повлияет ли это на наличие ошибки? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2016, 19:14 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
МимопроходящийHello, Polesov! You wrote on 18 марта 2016 г. 19:08:19: Polesov> Тогда как объяснить, что мне в файле БД обычном фар-ом удалось найти занчение текстового гуида? > Более того, после изменения в текстовом значении поля непосредственно в файле БД эти изменения стали видны при SQL-запросе. вполне возможно то что ты пишешь. проверено экспериментально. Значит, в моем случае все же было 2 записи? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2016, 19:16 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
WildSeryЕсли я правильно путаю Неправильно ты путаешь. Это делается для дельты. Сжатие безусловно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2016, 19:17 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
hvladДавай сюда DDL таблицы, индексов и сообщение из firebird.log firebird.log Код: powershell 1. 2. 3.
Фрагмент таблицы: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2016, 19:28 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
PolesovЧто я делаю не так? для полноты эксперимента - надо посмотреть, что пишется в firebird.log на тему этого битого индекса. Может это и не про этот индекс. - надо попробовать alter table drop constraint pk, и опять создать pk, без удаления "дубликатов". я не знаю, каким образом получается, что индекс создается уже битый, причем без ошибки (см. выше, может, гфикс вообще не про тот индекс тебе сообщает). А вот про "на диске не то, что выводится" - я уже говорил. Поэтому индексирование будет успешным, и физически дубликатов там нет. а ты их якобы видишь. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2016, 19:39 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
PolesovIndex 16 is corrupt см. rdb$indices, ищи там индекс с номером 16 для таблицы T, и потом давай ddl этого индекса. p.s. че-то я начинаю терять нить разговора. накой черт тут про исправление гуида на диске hex-едитором, если приведены два уникальных индекса для integer-столбцов??? Где, ёп, индекс по guid ? :-) Вот зачем людям голову морочить лишней информацией? Polesovrecord 0 have missing entriesв данном случае что-то не индексируется. Могу тогда разве что поставить на то, что на диске данные настолько для движка кривые, что он их читает, но не индексирует, и даже ошибку не выдает. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2016, 19:45 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
kdvнакой черт тут про исправление гуида на диске hex-едитором, если приведены два уникальных индекса для integer-столбцов? для того, чтобы одному из них поменять PK-ID обычным UPDATE ... WHERE GUID = xxxxx хотя, конечно, можно было бы и к RDB$DB_KEY привязаться и через курсор замутить, и наверное через генератор тоже... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2016, 19:55 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Polesov, я не вижу 17 индексов в этом DDL. Так что какой из них сломан - остаётся загадкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2016, 22:39 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Вопрос, м.б. и дилетантский, но: Почему бы не создать новую (пустую) базу, а затем не перелить в нее данные? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2016, 13:19 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Привет всем. На текущий момент из БД удалены все объекты, кроме таблицы с проблемным PK. В этой таблице оставлено 2 поля (DDL получен в IBE): Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Был сделан бэкап/ресторе - база получилась 118 MB. GFIX ошибок не находит. Запрос вида Код: plsql 1. 2. 3. 4.
по прежнему возвращает Код: powershell 1. 2.
P.S. Интересующимся могу выслать базу по запросу. С уважением, Polesov. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 13:37 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Polesov, высылай (не саму БД есс-но, ссылку на место загрузки) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 13:45 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
_Читатель_Почему бы не создать новую (пустую) базу, а затем не перелить в нее данные? Если БД имеет большой объем, время переливки может быть весьма значительным. Гораздо проще (и быстрее) удалить все FK на проблемную таблицу, удалить PK, избавиться от записи-дубля, и восстановить PK и все удаленные FK. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 13:46 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Polesov, да, и ещё : а) проверь на 2.5.5 (лучше на текущем снапшоте 2.5.6), а не на 2.5.4 б) что выдаст такой запрос ? Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 13:47 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
hvladда, и ещё : а) проверь на 2.5.5 (лучше на текущем снапшоте 2.5.6), а не на 2.5.4 Проверял на: Код: powershell 1. 2. 3. 4. 5. 6. 7. 8.
hvladб) что выдаст такой запрос ? Код: sql 1. 2. 3. 4.
Тоже самое. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 13:55 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
PolesovЗапрос: Код: plsql 1. 2. 3.
Результат: 2 абсолютно идентичных записи А план какой? может он у тебя по другому индексу отбирает, не по PK_T придумался ещё один весьма экзотичный, но гипотетически возможный баг: в индексе реально создаются два листа для одной записи, и при отборе именно по индексу запись задваивается, в отличие от " ...WHERE (ID+0) = 123" ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 13:59 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Кстати, имя индекса отличается от имени PK. Вот что показывает IBE: Код: powershell 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 14:09 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
AriochА план какой? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Код: plsql 1. 2. 3. 4. 5. 6.
Оба запроса возвращают 2 записи ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 14:12 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Ariochпридумался ещё один весьма экзотичный, но гипотетически возможный баг Этот баг совсем не гипотетический и совсем не экзотичный. Он живёт в сервере с версии 1.0 или 1.5, но не приводит к такому результату, поскольку в битовой карте бит не может быть установлен дважды. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 14:17 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Удалил PK и создал его заново - никаких ошибок. Дубликат PK остался. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 14:22 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovAriochпридумался ещё один весьма экзотичный, но гипотетически возможный баг Этот баг совсем не гипотетический и совсем не экзотичный. Он живёт в сервере с версии 1.0 или 1.5, но не приводит к такому результату, поскольку в битовой карте бит не может быть установлен дважды. то есть записи возвращаются из таблицы не напрямую по индексу, а через промежуточное построение битовой карты, даже если никаких джойнов нет и в помине? не знал... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 14:27 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Arioch, битовая карта не строится только в одном случае, когда идёт навигация по индексу ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 14:31 |
|
|
start [/forum/topic.php?fid=40&msg=39197164&tid=1562271]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
others: | 267ms |
total: | 429ms |
0 / 0 |