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

Помогите разобраться с проблемой.
После миграции 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
Help Error 391: Cannot insert a null into column
    #36361063
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Help Error 391: Cannot insert a null into column
    #36361151
KyRo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПолучается что Вы вставляете все поля и все не 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
Help Error 391: Cannot insert a null into column
    #36361207
KyRo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению вроде нашел эту ошибку на баг репорте (
И опять мы наступили на те же грабли что нужна версия 11.10.xC2W5. Какой то этот 11.10 вообще баговитый , второй баг который нашли за короткое время .


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

И в общем то полностью правы . С какой стати им тратить человеческие ресурсы для изменения кода и тестирования изменений , только из за того что наше руководство не соизволит выделить ресурсы на официальную поддержку.
...
Рейтинг: 0 / 0
Help Error 391: Cannot insert a null into column
    #36362828
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Help Error 391: Cannot insert a null into column
    #36362855
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KyRo

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

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

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


ну покопаем - может и действительно предложенный параметр уже существует :)
...
Рейтинг: 0 / 0
Help Error 391: Cannot insert a null into column
    #36362867
KyRo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте что бы не вводить больше не кого в заблуждение , я приведу в понедельник схему живой таблицы с которой произошла проблема и поля которое выдало данную ошибку.
...
Рейтинг: 0 / 0
Help Error 391: Cannot insert a null into column
    #36362871
KyRo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Данный пример , это моя попытка с повторить проблему , наверно не совсем удачная.
...
Рейтинг: 0 / 0
Help Error 391: Cannot insert a null into column
    #36366533
KyRo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привожу как и говорил пример живой таблицы. Затык пошел по полю 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
Help Error 391: Cannot insert a null into column
    #36366705
Фотография Евгений Фадеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ваша "настоящая" таблица ничем, принципиально, не отличается.

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

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

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

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

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

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

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


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