|
|
|
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 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
Ответ не правильный. При not nullя всегда делаю default 0 (ну или что-то по смыслу). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 17:44:06 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
Структура CREATE TABLE ZAKAZ ( ID INTEGER NOT NULL, NOM SMALLINT, DADA DATE, USER_ID SMALLINT, STREET1_ID SMALLINT, DOM1 VARCHAR(8) CHARACTER SET WIN1251, APP VARCHAR(20) CHARACTER SET WIN1251, TEL VARCHAR(15) CHARACTER SET WIN1251, STREET2_ID SMALLINT, DOM2 VARCHAR(8) CHARACTER SET WIN1251, TARIF FLOAT, TIMEN TIME, TIMER TIME, CAR_ID SMALLINT, EXECZAKAZ SMALLINT, PROZVON SMALLINT, STREET3_ID SMALLINT, DOM3 VARCHAR(8) CHARACTER SET WIN1251, STREET4_ID SMALLINT, DOM4 VARCHAR(8) CHARACTER SET WIN1251, STREET5_ID SMALLINT, DOM5 VARCHAR(8) CHARACTER SET WIN1251, PUNKT1 SMALLINT, PUNKT2 SMALLINT, PUNKT3 SMALLINT, PUNKT4 SMALLINT, PRIMECH VARCHAR(100) CHARACTER SET WIN1251, PROSTOY1 SMALLINT, PROSTOY2 SMALLINT, PROSTOY3 SMALLINT, PROSTOY4 SMALLINT, MESS SMALLINT, PROZVON2 SMALLINT, BEZNAL SMALLINT, RAST SMALLINT, MARSHRUT VARCHAR(255) CHARACTER SET WIN1251, MARSHRUT1 VARCHAR(255) CHARACTER SET WIN1251, MARSHRUT2 VARCHAR(255) CHARACTER SET WIN1251, ARH SMALLINT DEFAULT 0, DTNEVIP TIMESTAMP, DRIVERGIVEMIN SMALLINT, BLOK SMALLINT, DTZAKAZ TIMESTAMP default Current_TimeStamp, NOTEDITCAR SMALLINT default 0 NOT NULL, USERLASTEDIT_ID SMALLINT, INET SMALLINT default 0 NOT NULL, USERR_ID SMALLINT, DTZAKAZR TIMESTAMP, BILZVONOK SMALLINT default 0 NOT NULL, CAR SMALLINT, NEVIPZAKAZ2 SMALLINT default 0 NOT NULL, EXECZAKAZ2 SMALLINT default 0 NOT NULL, KAKDOLGOVVOD FLOAT, ADDPAYMOB DOUBLE PRECISION default 0 NOT NULL, INET_IP VARCHAR(50) CHARACTER SET WIN1251, VERS INTEGER default 0 NOT NULL, LINKCAR VARCHAR(255) CHARACTER SET WIN1251, KOLONA SMALLINT default 1 NOT NULL ); Проблемные записи: ID NOM DADA USER_ID STREET1_ID DOM1 APP TEL STREET2_ID DOM2 TARIF TIMEN TIMER CAR_ID EXECZAKAZ PROZVON STREET3_ID DOM3 STREET4_ID DOM4 STREET5_ID DOM5 PUNKT1 PUNKT2 PUNKT3 PUNKT4 PRIMECH PROSTOY1 PROSTOY2 PROSTOY3 PROSTOY4 MESS PROZVON2 BEZNAL RAST MARSHRUT MARSHRUT1 MARSHRUT2 ARH DTNEVIP DRIVERGIVEMIN BLOK DTZAKAZ NOTEDITCAR USERLASTEDIT_ID INET USERR_ID DTZAKAZR BILZVONOK CAR NEVIPZAKAZ2 EXECZAKAZ2 KAKDOLGOVVOD ADDPAYMOB INET_IP VERS LINKCAR KOLONA 876950 2 16.07.2004 168 2351 20 в 395 462-87-92 3454 1 35 11:30:00 11:30:00 0 0 0 1 0 0 0 Свадьба. 0 0 0 0 -45 0 0 12 144-143-142-141-264-268-282-358-284-285-286-287; 0 0 1 22.06.2004 10:56:15 0 108 0 0 0 0 0 15 0 7227466 1 876949 1 16.07.2004 168 2351 20 в 395 462-87-92 3454 1 35 11:30:00 11:30:00 0 0 0 1 0 0 0 свадьба. 0 0 0 0 -45 0 0 12 144-143-142-141-264-268-282-358-284-285-286-287; 0 0 1 22.06.2004 10:55:44 0 108 0 0 0 0 0 81 0 7227473 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 17:49:58 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
Код: plaintext Выполни-ка такой запрос: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 18:00:53 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
Добавь PLAN NATURAL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 18:05:04 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
А еще: - когда ты свои любимые поля: Код: plaintext сделал CHARACTER SET WIN1251 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 18:06:54 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
По запросу записей нет (plan Natural). А win1251 сделал сегодня в процессе нахождения проблемы. Но это ничего не дало ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 18:10:14 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
2 МП: А зачем "Добавь PLAN NATURAL"? Объясни. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 18:17:17 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
Игорь РПо запросу записей нет (plan Natural). А win1251 сделал сегодня в процессе нахождения проблемы. Но это ничего не дало А долбануть ты эту запись могешь ? Или тоже ошибка ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 18:17:20 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
mv2 МП: А зачем "Добавь PLAN NATURAL"? Я так понял, чтобы исключить возможность подключения битых индексов, так, что ли ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 18:21:15 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
Долбануть то я могу, что я и сделал на рабочей базе. Все работают и улыбаются. Но я хочу все таки узнать причину возникновения таких ошибок, как их избежать в будущем... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 18:24:15 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
Игорь РНо я хочу все таки узнать причину возникновения таких ошибок, как их избежать в будущем... Кто его знает. Сейчас вот припомнилось, было что-то вроде этого и у меня. Если память не отказывает, тогда я просто пересоздал индексы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 18:28:28 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
А при чем тут индексы? Есть теоретическое объяснение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 18:29:57 |
|
||
|
Ariерmetic exception
|
|||
|---|---|---|---|
|
#18+
Больше рекомендаций нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 19:14:48 |
|
||
|
|

start [/forum/topic.php?all=1&fid=40&tid=1578227]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
183ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
87ms |
get tp. blocked users: |
2ms |
| others: | 226ms |
| total: | 544ms |

| 0 / 0 |
