Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.

PostgreSQL Error 23502: not_null_violation — обработка NULL значений

Обновлено: 25.08.2026  ·  Официальная база знаний
  • Ошибка приложения: ERROR: null value in column "status" of relation "orders" violates not-null constraint (SQLSTATE 23502).
  • Отказ выполнения команд INSERT или UPDATE при передаче пропущенных полей.
  • Сбои заполнения реквизитов объектов метаданных при программной записи в 1С.

1. Поиск строк, содержащих недопустимые NULL значения

SELECT * 
FROM orders 
WHERE status IS NULL;

2. Заполнение значений по умолчанию и добавление DEFAULT

-- 1. Заполнение существующих NULL значений
UPDATE orders SET status = 'pending' WHERE status IS NULL;

-- 2. Назначение значения по умолчанию на уровне схемы
ALTER TABLE orders ALTER COLUMN status SET DEFAULT 'pending';

3. Безопасное добавление NOT NULL на больших таблицах (без долгих блокировок)

Начиная с PostgreSQL 12+, добавление NOT NULL со значением DEFAULT выполняется мгновенно без перезаписи таблицы:

-- Быстрое добавление ограничения через валидацию CHECK
ALTER TABLE orders ADD CONSTRAINT check_status_not_null CHECK (status IS NOT NULL) NOT VALID;
ALTER TABLE orders VALIDATE CONSTRAINT check_status_not_null;

4. Использование функций COALESCE в запросах

INSERT INTO orders (user_id, status)
VALUES (42, COALESCE(NULL, 'default_status'));
Практический опыт инженера: При проектировании схем всегда определяйте осмысленные значения DEFAULT для всех обязательных колонок — это предотвратит сбои API-клиентов при обновлении версий сервисов.

Частые вопросы (FAQ)

Что вызывает ошибку 23502 not_null_violation?

Попытка записать явное значение NULL (или пропуск колонки, не имеющей значения DEFAULT) в столбец с ограничением NOT NULL.

Как добавить ограничение NOT NULL на таблицу размером в терабайт?

Создайте ограничение CHECK (column IS NOT NULL) NOT VALID, затем выполните ALTER TABLE ... VALIDATE CONSTRAINT. Это проверит данные без длительной эксклюзивной блокировки таблицы.

Как обрабатываются пустые строки и NULL в 1С:Предприятие?

В платформе 1С строковые реквизиты обычно хранятся как пустые строки '', а не NULL. Ошибка 23502 возникает при некорректной прямой записи через внешние источники данных.

Можно ли снять ограничение NOT NULL без блокировки?

Да, операция ALTER TABLE table_name ALTER COLUMN column_name DROP NOT NULL выполняется мгновенно и требует лишь кратковременной блокировки обновления метаданных.