|
|
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
Подскажите, что может быть. Есть база Yaffill В таблице поле SmallInt. При попытке присвоить ему значение (например 2), причем даже при помощи IBConsole выдается ошибка 'Ariерmetic exception numeric overflow, or string trancation'. Это возникает редко. Ошибок в базе нет, backUp-Restore выполняется, не помогает. Из-за чего эта ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 15:38:34 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
Игорь РПодскажите, что может быть. Есть база Yaffill В таблице поле SmallInt. При попытке присвоить ему значение (например 2), причем даже при помощи IBConsole выдается ошибка 'Ariерmetic exception numeric overflow, or string trancation'. Это возникает редко. Ошибок в базе нет, backUp-Restore выполняется, не помогает. Из-за чего эта ошибка? Покажи запрос изменения поля и, если есть, текст триггеров на обновление этой таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 15:42:12 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
Нашел в инете ссылки на подобные вопросы. Говорят это из-за Character set. У меня действительно установлено в none. Как можно на лету у базы установить character set? Может что-то еще нужно установить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 15:50:45 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
Character set к данной постановке вопроса отношения никакого не имеет... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 15:53:06 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
Далее все триггеры по UPDATE А сама строка 'UPDATE ZAKAZ SET EXECZAKAZ=2 where ID=876950' CREATE TRIGGER "NOM_ZAKAZ_U" FOR "ZAKAZ" ACTIVE BEFORE UPDATE POSITION 1 AS declare variable i int; BEGIN NEW.VERS=GEN_ID(VERSIYA,1); IF (OLD.DADA<>NEW.DADA) THEN BEGIN select max(NOM) from ZAKAZ a where a.Dada = new.Dada into i; new.NOM = i+1; if ((new.NOM is NULL) or (new.NOM = 0)) then new.NOM = 1; END END ^ CREATE TRIGGER "T_ZAKAZ_LAST_U" FOR "ZAKAZ" ACTIVE BEFORE UPDATE POSITION 1 AS declare variable dt TimeStamp; declare variable dtl TimeStamp; BEGIN if (new.ExecZakaz<>old.ExecZakaz) then if (new.ExecZakaz=2) Then begin dt=new.Dada+new.Timer; select dtlast from car where id=new.car_id and fired=0 into dtl; if (:dtl is null) then UPDATE car set dtLast=:dt where id=New.Car_id and fired=0; else if (dt>dtl) then UPDATE car set dtLast=:dt where id=New.Car_id and fired=0; end if (new.Car_id>0) then if (new.Car_Id<>old.Car_id) then begin dt=CURRENT_TIMESTAMP; select dtlast from car where id=new.car_id and fired=0 into dtl; if (:dtl is null) then UPDATE car set dtLast=:dt where id=New.Car_id and fired=0; else if (dt>dtl) then UPDATE car set dtLast=:dt where id=New.Car_id and fired=0; end END ^ CREATE TRIGGER "T_ZAKAZ_BEZNAL" FOR "ZAKAZ" ACTIVE BEFORE UPDATE POSITION 2 AS declare variable idDB SmallInt; declare variable idF SmallInt; declare variable proc SmallInt; BEGIN if (new.ExecZakaz<>old.ExecZakaz) then begin if (new.beznal>0) then begin select id from dengi_beznal where nomzak=new.nom and datZak=new.dada into idDB; select id,proc1 from fbeznal where nom=new.beznal into idF,proc; if (:idDB>0) then if (new.ExecZakaz=2) then UPDATE dengi_beznal SET dengi=0-new.Tarif-new.Tarif*:proc/100, firma_id=:idF WHERE id=:idDB; else UPDATE dengi_beznal SET dengi=0, firma_id=:idF WHERE id=:idDB; else if (new.ExecZakaz=2) then INSERT INTO dengi_beznal (dt,user_id,firma_id,dengi,priznak,nomzak,datzak) values (Current_TimeStamp,new.user_id,:idF,(0-new.Tarif-new.Tarif*:proc/100),1,new.nom,new.dada); else if (old.ExecZakaz=2) then INSERT INTO dengi_beznal (dt,user_id,firma_id,dengi,priznak,nomzak,datzak) values (Current_TimeStamp,new.user_id,:idF,(new.Tarif+new.Tarif*:proc/100),1,new.nom,new.dada); end end else if (new.ExecZakaz=2) then begin select id from dengi_beznal where nomzak=new.nom and datZak=new.dada into idDB; select id,proc1 from fbeznal where nom=new.beznal into idF,proc; if (new.beznal>0) then begin if (:idDB>0) then UPDATE dengi_beznal SET dengi=0-new.Tarif-new.Tarif*:proc/100, firma_id=:idF WHERE id=:idDB; else INSERT INTO dengi_beznal (dt,user_id,firma_id,dengi,priznak,nomzak,datzak) values (Current_TimeStamp,new.user_id,:idF,(0-new.Tarif-new.Tarif*:proc/100),1,new.nom,new.dada); end else if (old.beznal>0) then begin if (:idDB>0) then UPDATE dengi_beznal SET dengi=0, firma_id=:idF WHERE id=:idDB; end end END ^ CREATE TRIGGER "T_ZAKAZ_NEC_U" FOR "ZAKAZ" ACTIVE BEFORE UPDATE POSITION 2 AS declare variable dt TimeStamp; declare variable cec SmallInt; declare variable razni SmallInt; BEGIN dt=CURRENT_TIMESTAMP; select CanEditCar from nastr where id=1 into cec; razni=(CURRENT_TIMESTAMP-new.dtZakaz)*1440; if (new.Car_id<>old.Car_id) then begin if (new.NotEditCar=1) then if (cec>0) then if (razni>cec) then insert into penalty (car_id,car2_id,user_id,datep,timep,primech,nedavat,dateZak,NomZak) values (old.car_id,new.car_id,new.userLastEdit_id,Current_date,current_time,'Èçìåíåíà ìàøèíà',3,new.dada,new.nom); if (new.NotEditCar=0) then begin new.NotEditCar=1; end new.userr_id=new.UserLastEdit_id; new.dtzakazR=current_timestamp; INSERT INTO PHONERING (USER_ID,ZAKAZ_ID,WHAT,ZAKAZ_NOM) VALUES (new.UserLastEdit_id,new.id,2,new.nom); end if (old.TimeN<>new.TimeN) then begin new.dtzakaz=Current_timestamp; INSERT INTO PHONERING (USER_ID,ZAKAZ_ID,WHAT,ZAKAZ_NOM) VALUES (new.UserLastEdit_id,new.id,1,new.nom); end if (old.Blok<>new.Blok) then begin if (new.Blok=5) then begin INSERT INTO PHONERING (USER_ID,ZAKAZ_ID,WHAT,WHAT_DOP,ZAKAZ_NOM) VALUES (-1,new.id,2,2,new.nom); end end END ^ CREATE TRIGGER "PROZVON_ZAKAZ_U" FOR "ZAKAZ" ACTIVE BEFORE UPDATE POSITION 3 AS declare variable i int; BEGIN IF (OLD.PROZVON<>NEW.PROZVON) THEN BEGIN if (OLD.PROZVON=0) then begin NEW.EXECZAKAZ2=OLD.EXECZAKAZ; NEW.EXECZAKAZ=0; end else if (NEW.PROZVON=0) then begin if (OLD.EXECZAKAZ2>0) then NEW.EXECZAKAZ=OLD.EXECZAKAZ2; end END END ^ CREATE TRIGGER "AU_ZAKAZ" FOR "ZAKAZ" ACTIVE AFTER UPDATE POSITION 0 AS BEGIN POST_EVENT 'zakaz'; END ^ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 15:58:05 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
Так что, никто ничего не подскажет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 16:34:11 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
Игорь РДалее все триггеры по UPDATE А сама строка 'UPDATE ZAKAZ SET EXECZAKAZ=2 where ID=876950' Попробуй на копии БД поотключать по очереди все эти триггеры (переводи их в состояние INACTIVE) Как найдешь, в каком именно происходит сбой, сообчи. Кстати, первые 2 триггера имеют одинаковый Position. Зачем ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 16:38:00 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
Отключил все триггеры, проблема осталась ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 16:46:41 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
А констреинты к этой таблице есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 16:47:46 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
Игорь РОтключил все триггеры, проблема осталась А на поле ZAKAZ не наложено ли ограничение типа Value In (...) или что-то в этом роде ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 17:00:07 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
Ограничений на таблицу нет. Есть куча индексов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 17:19:00 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
Угу. А фореигн кеу с каскаде, например, он упдате опшнс, есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 17:20:40 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
Интересный нюанс: Глючат таким образом заказы, введенные 20 дней назад. 22.06 было Insert, а сейчас пытаюсь с ними сделать UPDATE. Те заказы, которые вводились вчера, сегодня нормально поддаются Update. Что можно было сделать с базой такого с 22.06 по 16.07, чтобы введенные строки не поддавались update? И еще вопрос. Действительно ли character set не причем? У меня стоит none, а работаю я в принципе с кирилицей. Работаю нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 17:22:46 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
Проверь базу gfix'ом. Очень даже могут быть битые страницы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 17:26:47 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
И еще. В этих строчках я не могу изменить ни одно поле (прямой доступ через IBExpert) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 17:27:17 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
Тем более. Проверяй. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 17:29:55 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
И ошибок нет. Маразм какой то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 17:35:51 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
За последнее время метаданные не менял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 17:37:19 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
gfix.exe -v -full t.gdb -user SYSDBA -password masterkey ведь я правильно проверяю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 17:38:10 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
Меняю частенько ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 17:39:10 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
В основном добавляю колонки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 17:39:43 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
Такое, честно говоря наблюдалось и ранее. К примеру: я у клиента делаю backup базы и забираю домой на cd-r. Приношу,делаю дома restore и опа, записи не update. Новые дома создаю - нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 17:42:01 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
Понятно. Ты добавил колонку с, например, Not Null, который не выполняется для "старых" записей, когда этой колонки не было. Тебе повезло, что b/r не делал. Понятно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 17:42:37 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
Покажи структуру таблицы и значения полей "проблемной" записи. Сейчас по-быстрому все исправим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 17:43:46 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=461&tid=1578227]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 387ms |

| 0 / 0 |
