Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / Help Error 391: Cannot insert a null into column / 25 сообщений из 33, страница 1 из 2
11.12.2009, 12:40
    #36361025
KyRo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help Error 391: Cannot insert a null into column
Добрый день.

Помогите разобраться с проблемой.
После миграции Informix с версии 9.4UC4 на 11.10UC2 появилась странная проблема .
Проблема заключается в ошибке "391: Cannot insert a null into column" при вставке пустого поля в таблицу вида :

Код: plaintext
1.
2.
3.
4.
5.
6.
create table "cap".caccounts_test
(
    serno serial not null constraint "cap".caccount_test01,
    stmtcycle smallint default  1  not null constraint "cap".caccount_test02,
    riskdomainserno integer,
    chargeoffind smallint ,default  0  not null );
revoke all on "cap".caccounts from "public" as "cap";

Вставлять пробую поле :

Код: plaintext
1.
insert into caccounts_test (serno, stmtcycle, riskdomainserno, chargeoffind)
VALUES  ( 1 , 1 , 1 ,'')

Так вот получается что не отрабатывает условие
Код: plaintext
default  0  not null

Подскажите из за чего это может быть и где копать ?
...
Рейтинг: 0 / 0
11.12.2009, 12:51
    #36361063
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help Error 391: Cannot insert a null into column
KyRo
chargeoffind smallint , default 0 not null

Плохо копировали? К чему относится default 0 not null, учитыва выделенную мною запятую?

KyRo
Вставлять пробую поле :

Код: plaintext
1.
insert into caccounts_test (serno, stmtcycle, riskdomainserno, chargeoffind)
VALUES  ( 1 , 1 , 1 ,'')

Так вот получается что не отрабатывает условие
Код: plaintext
default  0  not null

Подскажите из за чего это может быть и где копать ?

Получается что Вы вставляете все поля и все не NULL...

Поэтому получается, или вышеупомянутая запятая есть в действительности - тогда непонятно, как у вас вообще таблица создалась, или запятая - Ваша очепятка в форуме, а вы смотрите неполный DDL таблицы, и, может быть, у вас имеется триггер на insert на этой таблице.
...
Рейтинг: 0 / 0
11.12.2009, 13:17
    #36361151
KyRo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help Error 391: Cannot insert a null into column
авторПолучается что Вы вставляете все поля и все не NULL...

Поэтому получается, или вышеупомянутая запятая есть в действительности - тогда непонятно, как у вас вообще таблица создалась, или запятая - Ваша очепятка в форуме, а вы смотрите неполный DDL таблицы, и, может быть, у вас имеется триггер на insert на этой таблице.

Прошу прощения - это опечатка .

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
{ TABLE "cap".caccounts_test row size =  12  number of columns =  4  index size =  0  }
create table "cap".caccounts_test
  (
    serno serial not null constraint "cap".caccount_test01,
    stmtcycle smallint
        default  1  not null constraint "cap".caccount_test02,
    riskdomainserno integer,
    chargeoffind smallint
        default  0  not null
  );
revoke all on "cap".caccounts_test from "public" as "cap";
...
Рейтинг: 0 / 0
11.12.2009, 13:31
    #36361207
KyRo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help Error 391: Cannot insert a null into column
К сожалению вроде нашел эту ошибку на баг репорте (
И опять мы наступили на те же грабли что нужна версия 11.10.xC2W5. Какой то этот 11.10 вообще баговитый , второй баг который нашли за короткое время .


баг номер IC54468
...
Рейтинг: 0 / 0
11.12.2009, 13:56
    #36361295
Евгений Фадеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help Error 391: Cannot insert a null into column
Только вот непонятно зачем Вы в поле типа SMALLINT вставляете строковое ('') значение...
...
Рейтинг: 0 / 0
11.12.2009, 17:18
    #36361975
KyRo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help Error 391: Cannot insert a null into column
Евгений ФадеевТолько вот непонятно зачем Вы в поле типа SMALLINT вставляете строковое ('') значение...

Не могу сказать , это сторонняя разработка , так было и наверно так надо )
...
Рейтинг: 0 / 0
11.12.2009, 17:54
    #36362072
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help Error 391: Cannot insert a null into column
KyRoЕвгений ФадеевТолько вот непонятно зачем Вы в поле типа SMALLINT вставляете строковое ('') значение...

Не могу сказать , это сторонняя разработка , так было и наверно так надо )
А поменять можете?
...
Рейтинг: 0 / 0
11.12.2009, 18:29
    #36362140
Евгений Фадеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help Error 391: Cannot insert a null into column
KyRoНе могу сказать , это сторонняя разработка , так было и наверно так надо )Вот в последнем я совсем не уверен. Вообще странно что он не ругается на несоответствие типов.
...
Рейтинг: 0 / 0
11.12.2009, 18:35
    #36362149
Евгений Фадеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help Error 391: Cannot insert a null into column
Евгений ФадеевKyRoНе могу сказать , это сторонняя разработка , так было и наверно так надо )Вот в последнем я совсем не уверен. Вообще странно что он не ругается на несоответствие типов.И, кстати, я проверил у себя (попробовал сделать временную таблицу с такой же как у Вас структурой) - при вставке '' он точно так же ругается с -391. А версия у меня 11.50 FC2.

В общем рекомендую поправить кривой код.
...
Рейтинг: 0 / 0
11.12.2009, 22:01
    #36362395
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help Error 391: Cannot insert a null into column
Евгений ФадеевВообще странно что он не ругается на несоответствие типов.
Так это же старая фишка информикса - неявное преобразование типов. Об этом дискутировали не раз - свои плюсы, свои минусы :)
...
Рейтинг: 0 / 0
12.12.2009, 13:26
    #36362791
KyRo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help Error 391: Cannot insert a null into column
авторА поменять можете?

Нет поменять код не сможем , там вся база утыкана такими преобразованиями. Если что то сменим , при следующем апдейте софта , не соберем концы с концами.
...
Рейтинг: 0 / 0
12.12.2009, 13:44
    #36362799
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help Error 391: Cannot insert a null into column
KyRoавторА поменять можете?

Нет поменять код не сможем , там вся база утыкана такими преобразованиями. Если что то сменим , при следующем апдейте софта , не соберем концы с концами.

Выглядит жёстко... Варианты:

1) поменять запрос - вычёркиваем :(

2) Убрать not null со столбца (?)

3) Просить IBM добавить возможность переменной конфига сервера выключить неявное преобразование типов :)

4) перехватывать запрос по пути к серверу и править :))

5) самим пропатчить информикс

Ещё варианты будут?
...
Рейтинг: 0 / 0
12.12.2009, 13:47
    #36362801
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help Error 391: Cannot insert a null into column
KyRo
После миграции Informix с версии 9.4UC4 на 11.10UC2

на 9.4 UC8 тоже ругается!
...
Рейтинг: 0 / 0
12.12.2009, 13:50
    #36362805
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help Error 391: Cannot insert a null into column
KyRoавторА поменять можете?

Нет поменять код не сможем , там вся база утыкана такими преобразованиями. Если что то сменим , при следующем апдейте софта , не соберем концы с концами.

Ёпрст, так система всё же модифицируема по функционалу - то есть обновляется и развивается? Почему исполнитель не может поменять функционал? Или они не декларируют поддержку выже IDS 9.4C4?
...
Рейтинг: 0 / 0
12.12.2009, 13:51
    #36362807
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help Error 391: Cannot insert a null into column
исполнитель = разработчик
...
Рейтинг: 0 / 0
12.12.2009, 14:19
    #36362823
KyRo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help Error 391: Cannot insert a null into column
авторна 9.4 UC8 тоже ругается!

Хмм , может я не совсем корректно привел пример , скорее в проблеме в текстовое поле идет вставка null значения и в таком случае должен выставится определенный флаг вместо этого null .


авторЁпрст, так система всё же модифицируема по функционалу - то есть обновляется и развивается? Почему исполнитель не может поменять функционал? Или они не декларируют поддержку выже IDS 9.4C4?

Нет тут несколько сложнее . Они декларируют поддержку софта отдельно от поддержки СУБД. То есть
поддержку СУБД надо покупать у них отдельно.

А в таком случае на запрос решения проблемы, они просто ответили что "Это известная проблема Informix , мы с ней сталкивались. Обращайтесь в вашу поддержку Informix "

И в общем то полностью правы . С какой стати им тратить человеческие ресурсы для изменения кода и тестирования изменений , только из за того что наше руководство не соизволит выделить ресурсы на официальную поддержку.
...
Рейтинг: 0 / 0
12.12.2009, 14:31
    #36362828
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help Error 391: Cannot insert a null into column
KyRo
Код: plaintext
1.
2.
3.
create table "cap".caccounts_test
(
...    chargeoffind smallint default  [b]0 [/b] not null );

Вставлять пробую поле :

Код: plaintext
1.
insert into caccounts_test (serno, stmtcycle, riskdomainserno, chargeoffind)
VALUES  ( 1 , 1 , 1 ,'')

Так вот получается что не отрабатывает условие
Код: plaintext
default  0  not null

Подскажите из за чего это может быть и где копать ?
И напоследок - вдруг чего пропустили:
default 0 не отрабатывает (и никому не должен), потому что в INSERT явно присутствует chargeoffind..
...
Рейтинг: 0 / 0
12.12.2009, 15:16
    #36362855
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help Error 391: Cannot insert a null into column
KyRo

Хмм , может я не совсем корректно привел пример , скорее в проблеме в текстовое поле идет вставка null значения и в таком случае должен выставится определенный флаг вместо этого null .

Вот тут я думаю вы тут всех нас запутали.... Какое текстовое поле? В таблице его нет, в клиенте что-ли? Можно конечно, и на Informix Client чего подумать - но это из области фантастики... Или вы при копировании примера ещё где-то ошиблись?

KyRo
"Это известная проблема Informix , мы с ней сталкивались. Обращайтесь в вашу поддержку Informix "


ну покопаем - может и действительно предложенный параметр уже существует :)
...
Рейтинг: 0 / 0
12.12.2009, 15:31
    #36362867
KyRo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help Error 391: Cannot insert a null into column
Давайте что бы не вводить больше не кого в заблуждение , я приведу в понедельник схему живой таблицы с которой произошла проблема и поля которое выдало данную ошибку.
...
Рейтинг: 0 / 0
12.12.2009, 15:38
    #36362871
KyRo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help Error 391: Cannot insert a null into column
Данный пример , это моя попытка с повторить проблему , наверно не совсем удачная.
...
Рейтинг: 0 / 0
15.12.2009, 11:12
    #36366533
KyRo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help Error 391: Cannot insert a null into column
Привожу как и говорил пример живой таблицы. Затык пошел по полю archflag

Код: 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.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
{ TABLE "cap".cstatements row size =  146  number of columns =  24  index size =  83 
}
create table "cap".cstatements
  (
    serno serial not null constraint "cap".cstatementsnl01,
    fragmentindicator smallint
        default  1  not null constraint "cap".cstatementsnl05,
    caccserno integer not null constraint "cap".cstatementsnl02,
    batchserno integer,
    billingdate date,
    generatedate datetime year to second,
    lastprintdate datetime year to second,
    printcount smallint
        default  0  not null constraint "cap".cstatementsnl04,
    closingbalance decimal( 16 , 3 )
        default  0 . 000  not null constraint "cap".cstatementsnl15,
    openingbalance decimal( 16 , 3 )
        default  0 . 000  not null constraint "cap".cstatementsnl16,
    mindueamount decimal( 16 , 3 )
  default  0 . 000  not null constraint "cap".cstatementsnl17,
    overdueamount decimal( 16 , 3 )
        default  0 . 000  not null constraint "cap".cstatementsnl18,
    totaldebits decimal( 16 , 3 )
        default  0 . 000  not null ,
    totalcredits decimal( 16 , 3 )
        default  0 . 000  not null ,
    totalpayments decimal( 16 , 3 )
        default  0 . 000  not null ,
    returnedpayments decimal( 16 , 3 )
        default  0 . 000  not null ,
    creditlimit decimal( 16 , 3 )
        default  0 . 000  not null ,
    overduecycles smallint
        default  0  not null ,
    currency char( 3 ) not null constraint "cap".cstatementsnl12,
    duedate date,
    printduedate date,
    archflag smallint
        default  0  not null ,
    reason char( 1 )
        default 'O' not null constraint "cap".cstatementsnl11,
    prevstmtserno integer
  );
revoke all on "cap".cstatements from "public";
...
Рейтинг: 0 / 0
15.12.2009, 12:05
    #36366705
Евгений Фадеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help Error 391: Cannot insert a null into column
Ваша "настоящая" таблица ничем, принципиально, не отличается.

Проблема в данном случае в том, что криворукие разработчики того софта, который вы используете написали кривой код (в частности заложились на неявные преобразования типов), который, вероятно, и работал со строго определенными версиями СУБД, клиента и т.п., но с точки зрения общей инженерной дисциплины работать не должен. И при минимальных изменениях среды он работать перестал. В результате вы имеете проблемы.

Лично от себя могу предложить два варианта:

1. Таки поправить кривой код на нормальный
2. Вооружиться ложкой и начать выедать мозг поставщику
...
Рейтинг: 0 / 0
15.12.2009, 12:13
    #36366739
KyRo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help Error 391: Cannot insert a null into column
Евгений ФадеевВаша "настоящая" таблица ничем, принципиально, не отличается.

Проблема в данном случае в том, что криворукие разработчики того софта, который вы используете написали кривой код (в частности заложились на неявные преобразования типов), который, вероятно, и работал со строго определенными версиями СУБД, клиента и т.п., но с точки зрения общей инженерной дисциплины работать не должен. И при минимальных изменениях среды он работать перестал. В результате вы имеете проблемы.

Лично от себя могу предложить два варианта:

1. Таки поправить кривой код на нормальный
2. Вооружиться ложкой и начать выедать мозг поставщику

Нет код , править нельзя. Потом при следующем обновлении все вылезет боком, а вот второй вариант я бы с удовольствием , но не мои это выходит за рамки моих полномочий , хотя с огромным бы удовольствием
...
Рейтинг: 0 / 0
15.12.2009, 13:36
    #36367005
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help Error 391: Cannot insert a null into column
KyRo, спросите хоть у разработчиков, что по их религиозным убеждениям должно сохраниться в результате в этом поле? 0? Или пустая строка? :)
...
Рейтинг: 0 / 0
15.12.2009, 13:39
    #36367015
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help Error 391: Cannot insert a null into column
KyRo, есть подозрение, что сам сервер тут не при чем - нужно подкручивать настройки используемой библиотеки доступа или сам Informix-Client...
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / Help Error 391: Cannot insert a null into column / 25 сообщений из 33, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]