Мои сайты
Частые вопросы
Полезные ссылки
Операционные системы
Программное обеспечение
Оборудование
СУБД
Кулинария
Нарушено условие уникальности данных. Попытка вставки неуникального значения в уникальный индекс: 23505: ERROR: duplicate key value violates unique constraint "params_pkey" DETAIL: Key (filename, partno)=(ibparams.inf, 0) already exists. CONTEXT: COPY params, line 6 Завершить работу Перезапустить…
Избавиться от этой ошибки
Становимся пользователем postgres
su postgres
Подключаемся к базе данных
psql 4ce2951617ef477683c1451ef446a4ea
Проверяем существование записи в базе
SELECT * FROM params WHERE filename = 'ibparams.inf' AND partno = 0;
DETAIL: Key (filename, partno)=(ibparams.inf, 0) already exists
Я получил следующий «выхлоп»
filename | creation | modified | attributes | datasize |
binarydata
| partno
--------------+---------------------+---------------------+------------+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------+--------
ibparams.inf | 2022-12-14 08:38:40 | 2024-07-12 12:47:38 | 0 | 204 | \xefbbbf7b32302c302c302c312c22222c313230302c38363430302c31303435373131352d353363612d366361632d396338632d3265303531303431323962382c35613637626263392d
346631642d363936612d396538662d3438633163643232643836642c2d312c302c342c352c33302c22222c0d0a7b302c22222c332c382c332c33302c22222c22222c22222c353439353937373736383330383338313032322c3436352c312c22222c22222c22222c22222c3136302c307d2c302c
302c302c302c302c3433323030307d | 0
ibparams.inf | 2018-07-28 00:06:21 | 2024-07-12 12:47:38 | 0 | 204 | \xefbbbf7b32302c302c302c312c22222c313230302c38363430302c31303435373131352d353363612d366361632d396338632d3265303531303431323962382c35613637626263392d
346631642d363936612d396538662d3438633163643232643836642c2d312c302c342c352c33302c22222c0d0a7b302c22222c332c382c332c33302c22222c22222c22222c353439353937373736383330383338313032322c3436352c312c22222c22222c22222c22222c3136302c307d2c302c
302c302c302c302c3433323030307d | 0
(2 строки)
Видим, что действительно у нас 2 (две) строки с одинаковыми параметрами.
Делаем вывод, что нам нужно одну строку удалить.
Удаляем одну лишнюю строку
DELETE FROM params WHERE ctid IN ( SELECT ctid FROM params WHERE filename = 'ibparams.inf' AND partno = 0 ORDER BY ctid LIMIT 1 );
Проверяем, что осталась только одна строка
SELECT * FROM params WHERE filename = 'ibparams.inf' AND partno = 0;
Делаем резервную копию базы 1С
Затем запускаем тестирование базы 1С
Для этого заходим в конфигуратор, а потом:
Администрирование → Тестирование и исправление → Отметьте «Проверка логической целостности», «Пересчёт итогов».
У меня в базе оказалось несколько filename с дублирующимися записями.
Чтобы найти все filename с расширением .inf, у которых есть дубликаты при partno = 0, используйте следующий SQL‑запрос:
SELECT filename, COUNT(*) AS duplicate_count FROM params WHERE partno = 0 AND filename LIKE '%.inf' GROUP BY filename HAVING COUNT(*) > 1 ORDER BY filename;
У меня этот запрос выдал 2 строки
filename | duplicate_count --------------+----------------- ibparams.inf | 2 log.inf | 2 (2 строки)
Пришлось удалять дублирующиеся строки в двух filename
Просторы интернета и общение с ИИ https://alice.yandex.ru