Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
 backup: expression evaluation not supported. Value exceeds the range for valid dates  [new]
dedRasta
Member

Откуда:
Сообщений: 113
Сегодня при бекапе получил subj.:

expression evaluation not supported. Value exceeds the range for valid dates

Ошибка вылезает на очень простой таблице:
CREATE TABLE T_OFED_JOB (
    OFED_JOB_ID   D_INTKEY /* D_INTKEY = INTEGER NOT NULL */,
    OFED_JOBKOD   D_VARCHAR50 NOT NULL /* D_VARCHAR50 = VARCHAR(50) */,
    OFED_JOBNAME  D_VARCHAR_255 NOT NULL /* D_VARCHAR_255 = VARCHAR(255) */,
    OKPDTR        D_VARCHAR50 /* D_VARCHAR50 = VARCHAR(50) */,
    DATE_IN       D_DATE /* D_DATE = DATE */,
    OFED_DEP_ID   D_INTEGER /* D_INTEGER = INTEGER */
);


ALTER TABLE T_OFED_JOB ADD CONSTRAINT PK_T_OFED_JOB PRIMARY KEY (OFED_JOB_ID);


Попробовал сделать запрос в isql:
select * from T_OFED_JOB 

- получаю ту же ошибку.

Делаю там же так:
select * from T_OFED_JOB order by OFED_JOB_ID  


- все читается нормально.

Индекса по дате, который мог бы испортиться - нет.

Так что не знаю, что и думать.

Firebird 2.5 (26351), на Windows, суперсервер.
19 фев 19, 15:44    [21814434]     Ответить | Цитировать Сообщить модератору
 Re: backup: expression evaluation not supported. Value exceeds the range for valid dates  [new]
Arioch
Member

Откуда:
Сообщений: 10630
скорее всего у тебя каких-то строк просто нет в индексе

select * from T_OFED_JOB order by OFED_JOB_ID + 0;

select count(*) from T_OFED_JOB ; 
select count(*) from T_OFED_JOB order by OFED_JOB_ID ;
select count(*) from T_OFED_JOB order by OFED_JOB_ID + 0 ;
19 фев 19, 16:02    [21814459]     Ответить | Цитировать Сообщить модератору
 Re: backup: expression evaluation not supported. Value exceeds the range for valid dates  [new]
Arioch
Member

Откуда:
Сообщений: 10630
dedRasta
Firebird 2.5 (26351), на Windows, суперсервер.


google: 26351 firebird

Firebird: Firebird 2.5.1
www.firebirdsql.org/en/firebird-2-5-1/?‎
4 Oct 2011 ... October 04, 2011, FirebirdCS-2.5.1-26351-i386.pkg.zip


ах вот оно чё!

ну тогда конечно, тогда куда уж
19 фев 19, 16:04    [21814462]     Ответить | Цитировать Сообщить модератору
 Re: backup: expression evaluation not supported. Value exceeds the range for valid dates  [new]
dedRasta
Member

Откуда:
Сообщений: 113
Arioch
скорее всего у тебя каких-то строк просто нет в индексе

select * from T_OFED_JOB order by OFED_JOB_ID + 0;
select count(*) from T_OFED_JOB ; 
select count(*) from T_OFED_JOB order by OFED_JOB_ID ;
select count(*) from T_OFED_JOB order by OFED_JOB_ID + 0 ;

Спасибо! В конце работы самому пришло в голову это посмотреть. Только последние два из приведенных выше запросов не работают - что-то с агрегатами.

А сегодня урвал у сетевиков firebird.log и воочию увидел, что приключилось:
IDK (Server)	Tue Feb 19 16:21:20 2019
	Database: IS_IDK
	Index 1 is corrupt (missing entries) in table T_OFED_JOB (196)

IDK (Server)	Tue Feb 19 16:21:22 2019
	Database: IS_IDK
	Relation has 484 orphan backversions (0 in use) in table F_IDK (209)

Решил, что ремонтник из меня никакой, накатил последний бекап и запросами из битой БД его актуализировал - благо фактически пострадала только одна таблица, у второй, не смотря на страшный диагноз, проблем не обнаружилось.
20 фев 19, 13:13    [21815335]     Ответить | Цитировать Сообщить модератору
 Re: backup: expression evaluation not supported. Value exceeds the range for valid dates  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 27844
dedRasta
накатил последний бекап

зачем??? нужно было поломанным индексам сделать alter index active. Предварительно обновившись до 2.5.8. Или даже не обновившись.
А так - потерял данные с момента последнего бэкапа, просто потому что "так захотелось".
20 фев 19, 14:46    [21815465]     Ответить | Цитировать Сообщить модератору
 Re: backup: expression evaluation not supported. Value exceeds the range for valid dates  [new]
hvlad
Member

Откуда:
Сообщений: 10195
dedRasta,

достаточно было перестроить Index 1 in table T_OFED_JOB.

И, конечно же, использовать 2.5.1 - это безобразие
20 фев 19, 14:47    [21815467]     Ответить | Цитировать Сообщить модератору
 Re: backup: expression evaluation not supported. Value exceeds the range for valid dates  [new]
dedRasta
Member

Откуда:
Сообщений: 113
kdv
dedRasta
накатил последний бекап

зачем??? нужно было поломанным индексам сделать alter index active. Предварительно обновившись до 2.5.8. Или даже не обновившись.
А так - потерял данные с момента последнего бэкапа, просто потому что "так захотелось".

Виноват, нервы...
За науку спасибо. Сегодня препарировал битую тушку. Все получилось, как сказали,
только при попытке обновления индекса вылезло:
violation of PRIMARY or UNIQUE KEY constraint "PK_T_OFED_JOB" on table "T_OFED_JOB".
Problematic key value is ("OFED_JOB_ID" = 3570).

Далее:
delete from T_OFED_JOB where t_ofed_job.OFED_JOB_ID = 3570

185 records deleted

backup/restore 

IBE: Validation completed, no errors found


В понедельник пойду на поклон к сетевикам FB обновлять.

Еще раз спасибо.
21 фев 19, 16:23    [21816582]     Ответить | Цитировать Сообщить модератору
 Re: backup: expression evaluation not supported. Value exceeds the range for valid dates  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 27844
dedRasta,

хорошая программа - при отсутствии ПК нагенерила 185 записей с одним идентификатором.
21 фев 19, 20:51    [21816848]     Ответить | Цитировать Сообщить модератору
 Re: backup: expression evaluation not supported. Value exceeds the range for valid dates  [new]
dedRasta
Member

Откуда:
Сообщений: 113
kdv
dedRasta,
...при отсутствии ПК нагенерила 185 записей с одним идентификатором.

Дык, был ПК, об чем и ошибка при попытке обновления индекса по этому ПК вылезла.
Непонятно, почему она не вылезла, когда эти записи писались.
21 фев 19, 21:24    [21816869]     Ответить | Цитировать Сообщить модератору
 Re: backup: expression evaluation not supported. Value exceeds the range for valid dates  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 27844
dedRasta,

ПК предотвращает вставку одинаковых значений. ПК был поломан (индекс по ПК). Вставилось 185 одинаковых значений.
Вопрос - как так написана программа, что она втыкает одинаковые значения в ПК при его нерабочем состоянии.
Нет генератора? Долбит какое-то последнее значение, а по ошибке нарушения ПК делает инкремент, пока запись не вставится?
Я и говорю - хорошая программа.
21 фев 19, 21:41    [21816878]     Ответить | Цитировать Сообщить модератору
 Re: backup: expression evaluation not supported. Value exceeds the range for valid dates  [new]
Arioch
Member

Откуда:
Сообщений: 10630
dedRasta,

мне вот интересно, ты воообще о Firebird что-то читаешь?
ну вот например Release Notes ?

после 2.5.1 выходило ещё 8 версий ЕМНИП (включая security hotfix)

и в RelNotes к каждой было сказано про возможный п-ц с индексами в 2.5.1

Вот - как можно было себе геморрой привезти?
22 фев 19, 14:11    [21817300]     Ответить | Цитировать Сообщить модератору
 Re: backup: expression evaluation not supported. Value exceeds the range for valid dates  [new]
Arioch
Member

Откуда:
Сообщений: 10630
kdv
Долбит какое-то последнее значение, а по ошибке нарушения ПК делает инкремент, пока запись не вставится?


insert into ....... values ( ..., ..., ..., select max(id) + 1 from ...)

если индекс убит и почему-то последнее значение не видит хоть обвставляйся - то вот тебе и 185 записей
22 фев 19, 14:15    [21817304]     Ответить | Цитировать Сообщить модератору
 Re: backup: expression evaluation not supported. Value exceeds the range for valid dates  [new]
dedRasta
Member

Откуда:
Сообщений: 113
Arioch
dedRasta,
Вот - как можно было себе геморрой привезти?

Виноват, расслабился... Работает и работает.
Arioch
мне вот интересно, ты воообще о Firebird что-то читаешь?
ну вот например Release Notes ?
после 2.5.1 выходило ещё 8 версий ЕМНИП (включая security hotfix)
и в RelNotes к каждой было сказано про возможный п-ц с индексами в 2.5.1

Читаю, но вот это проглядел, потому сейчас и рву себе волосы э-э-э на спине.

А вообще posthumously дело выглядит так.
Генератор и триггер были и до этого работали.
CREATE GENERATOR GEN_T_OFED_JOB_ID;

CREATE TABLE T_OFED_JOB (
    OFED_JOB_ID   D_INTKEY /* D_INTKEY = INTEGER NOT NULL */,
    OFED_JOBKOD   D_VARCHAR50 NOT NULL /* D_VARCHAR50 = VARCHAR(50) */,
    OFED_JOBNAME  D_VARCHAR_255 NOT NULL /* D_VARCHAR_255 = VARCHAR(255) */,
    OKPDTR        D_VARCHAR50 /* D_VARCHAR50 = VARCHAR(50) */,
    DATE_IN       D_DATE /* D_DATE = DATE */,
    OFED_DEP_ID   D_INTEGER /* D_INTEGER = INTEGER */
);

ALTER TABLE T_OFED_JOB ADD CONSTRAINT PK_T_OFED_JOB PRIMARY KEY (OFED_JOB_ID);

/* Trigger: T_OFED_JOB_BI */
CREATE OR ALTER TRIGGER T_OFED_JOB_BI FOR T_OFED_JOB
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.ofed_job_id is null) then
    new.ofed_job_id = gen_id(gen_t_ofed_job_id,1);
enв


На запись к этой таблице обращаюсь раз в месяц, когда приходят обновления справочника в Excel.
Excel импортирую с помощью IbExpert'а во временную таблицу и из нее скриптом обновляю справочник:
    update or insert into t_ofed_job
    (
    OFED_jobKOD,
    OKPDTR,
    OFED_jobNAME,
    ofed_dep_id
    )
    values (
      :jobKOD,
      :okpdtr,
      :jobNAME,
      :OFED_DEP_ID
    )
    matching (
      OFED_jobKOD,
      OKPDTR,
      OFED_jobNAME,
      ofed_dep_id
    )

Последний раз скрипт пыхтел долго - минут 10 - но таки закончился вроде без ошибки.
Когда сейчас стал смотреть, в Excel оказалось две строки мусора.
22 фев 19, 18:37    [21817571]     Ответить | Цитировать Сообщить модератору
 Re: backup: expression evaluation not supported. Value exceeds the range for valid dates  [new]
Старый плюшевый мишка
Member

Откуда:
Сообщений: 513
dedRasta
Генератор и триггер были и до этого работали.

+


Приведённый код такого эффекта дать не может. Вариантов два:
а) Шипиён открутил контра-гайку зловредно и упорно выставлял за кадром генератор взад на одно и то же число. Сам он "заесть" не может. Ну никак.
б) Где-то в недрах приложения (а может в какой СП) есть ещё инсёрт по типу max+1, который пхает запись с ofed_job_id не null и триггер его не обслуживает. Пока был жив индекс, он получал отлуп при попытке вставить в параллельных транзакциях и в случае успеха обеспечивал отлуп следующему нормальному инсёрту - генератор-то отстаёт от данных.

Лично я ставлю на бе.
22 фев 19, 20:06    [21817628]     Ответить | Цитировать Сообщить модератору
 Re: backup: expression evaluation not supported. Value exceeds the range for valid dates  [new]
Arioch
Member

Откуда:
Сообщений: 10630
Старый плюшевый мишка,

....либо там у них где-то есть требование "правильной нумерации, т.е. без дырок" и соотв. есть код, который номера сдвигает. А в нём что-то типа select min(id) where id > :last_processed_id
27 фев 19, 11:47    [21820325]     Ответить | Цитировать Сообщить модератору
Все форумы / Firebird, InterBase Ответить