Ошибка СУБД Column does not exist

21.11.21

База данных - Администрирование СУБД

В данной статье на примере СУБД Postgre и конфигурации УНФ описывается метод исправления ошибки "Column does not exist". На просторах интернета натыкался на общее описание проблемы, что состав базы со стороны СУБД не соответствует той картине, что ожидает 1С. Надо приводить все в соответствие, а конкретных примеров не находил.

Изначально имеем:

Управление нашей фирмой, редакция 1.6 (1.6.25.212)

Postgre 9.4.2

pgAdmin 4.6.2

Все действия выполняются без активных сеансов с базой (кроме конфигуратора, когда он нужен)


При попытке выгрузки *.dt перед обновлением появилась ошибка, которая указывала на то,что не найдена колонка с обозначенным именем.

Уточнил у системного администратора, копии средствами СУБД делаются успешно, стандартная проверка базы ошибок не дает.

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

 
 Прилагаю пример, как это можно найти в Pg admin 4. Как альтернатива, можно также написать запрос, примера которого у меня нет под рукой)

 

Далее, используя платформенный метод ПолучитьСтруктуруХраненияБазыДанных(), узнал, на какую таблицу и поле указывает ошибка. В моем случае это был справочник "ДанныеОКорректировкеСведенийЗастрахованныхЛицСЗВ_КОРРПрисоединенныеФайлы" и поле "Редактирует". Справочник пуст, что снимает переживания о потере данных.

 

После этого полез в СУБД изучать картину. 

Слева проблемная база, справа ее копия для тестирования, развернутая до возникновения проблемы.

Попытка обычного переименования(через интерфейс pgAdmin) выдает ошибку, что поле "_fld28724]rtref" не найдено. Попытка создания правильного поля(скриптом Create) выдает ошибку, что поле "_fld28724_rtref" уже существует.

Ага! т.е. оно есть, но видим мы его иначе.

А вот скрипт 

ALTER TABLE IF EXISTS public._reference28250
    RENAME COLUMN "_fld28724_rtref" TO "_fld28724__rtref";

Работает успешно. Обновляем дерево объектов в СУБД. Теперь поле отражается, как мы задали ему новое имя. Меняем обратно на исходное.

ALTER TABLE IF EXISTS public._reference28250
    RENAME COLUMN "_fld28724__rtref" TO "_fld28724_rtref";

После этого получилось выгрузить копию *.dt и произвести дальнейшие манипуляции с базой.

 

Следует отметить, что случай этот не страшный.

Сам справочник пустой, поле итак присутствовало, но с некорректным именем. Не было необходимости создавать поле с нуля, сверившись с другой базой или скопировав из нее. Не было необходимости восстанавливать данные.

Процессу работы пользователей ошибка не мешала, копии средствами СУБД выполнялись исправно.

 

Если кто знает более практичные способы решения проблемы - буду рад ознакомиться.

СУБД Администрирование баз данных Ошибка Поле не найдено

См. также

HighLoad оптимизация Администрирование СУБД Системный администратор Программист Платформа 1С v8.3 Бесплатно (free)

Во второй статье по докладу «Дамп – не приговор, а повод задуматься», с которым выступили на конференции INFOSTART TECH EVENT 2024, рассмотрим, какую информацию содержат файлы дампа, чем она полезна и как ее анализировать.

14.04.2025    989    it-expertise    3    

16

Администрирование СУБД Программист Платформа 1С v8.3 Бесплатно (free)

Где лежат данные идентификаторов, как прочитать, как поменять...

10.04.2025    733    atdonya    0    

5

HighLoad оптимизация Администрирование СУБД Системный администратор Программист Платформа 1С v8.3 Бесплатно (free)

Опубликовали первую статью по итогам доклада «Дамп – не приговор, а повод задуматься», с которым выступали на конференции INFOSTART TECH EVENT 2024.

25.03.2025    640    it-expertise    7    

9

Администрирование СУБД Системный администратор Абонемент ($m)

Всегда надо обслуживать индексы SQL. В том числе по рекомендации самой 1С. Но обслуживать все и сразу - долго, тяжело серверу и, главное, бессмысленно. Особенно для больших баз. Данный скрипт выбирает, что надо делать, и делает это автоматически. Готового полного аналога не нашел, поэтому сделал этот. Можно примерять для любых конфигураций и платформ 1С. Проверено на 8.3.25.1501.

1 стартмани

12.02.2025    819    24    GreyCardinal    14    

4

HighLoad оптимизация Администрирование СУБД Программист Платформа 1С v8.3 Бесплатно (free)

В рамках мастер-класса мы запустим нагрузочный тест на 3К пользователей и посмотрим, как будет вести себя PostgreSQL при такой нагрузке.

11.12.2024    2272    Tantor    1    

6

Администрирование СУБД Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Бесплатно (free)

Много вариантов определения номера собственного процесса самого 1С8. В ходе поиска, опираясь на общедоступную информацию, дополнил алгоритм, но с учетом определения ИД запущенного приложения.

09.12.2024    1094    artly2000    6    

4
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Kalam 105 23.11.21 10:27 Сейчас в теме
Если кто знает более практичные способы решения проблемы - буду рад ознакомиться.


обновиться не пробовали?
говорят помогает...
4. tigcorp 4 01.12.21 16:21 Сейчас в теме
(1)Спасибо за дельный совет под статьей, которая начинается с того, что не получается произвести обновление из-за указанной ошибки.
meowmeow; +1 Ответить
2. aspirator23 340 26.11.21 11:22 Сейчас в теме
Да, это увы пока проблема. https://infostart.ru/public/168392/ с примерами исправления для MSSQL и Postgre. Там же есть обсуждение.
3. tigcorp 4 01.12.21 16:19 Сейчас в теме
(2)Это как раз одна из статей, которые навели меня на решение проблемы. Увы, проглядел в ней короткую строчку, что файл с примерами приложен
Оставьте свое сообщение