Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

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

PG_23502 1С:Предприятие и СУБД

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 выполняется мгновенно и требует лишь кратковременной блокировки обновления метаданных.

Полезные материалы
Рекомендуем