Получение информации о структуре хранения базы данных в терминах 1С:Предприятие и СУБД
Размещение данных 1С:Предприятия 8. Таблицы и поля
1CDBStorageStructureInfo v2.1
Платформа 8.3 → Битый dt-шник
Ошибка при загрузке dt файловой базы в PostgreSQL:
Ошибка загрузки информационной базы. В информационную базу загружены не все данные
по причине:
Нарушено условие уникальности данных.
Сообщение при загрузке в 1с:
Попытка вставки неуникального значения в уникальный индекс:
ERROR: could not create unique index "_reference643_bydatakey_rr"
DETAIL: Key (_idrref, _nodetref, _noderref)=(\x8e02283452a573354532b8d7a08ab2ae, \x00000009, \x9d04902b34af533b11e2c757fa890d98) is duplicated.
В логе PostgreSQL смотрим:
< 2020-04-09 10:32:08.514 MSK >ERROR: could not create unique index "_reference643_bydatakey_rr"
< 2020-04-09 10:32:08.514 MSK >DETAIL: Key (_idrref, _nodetref, _noderref)=(\x8e02283452a573354532b8d7a08ab2ae, \x00000009, \x9d04902b34af533b11e2c757fa890d98) is duplicated.
< 2020-04-09 10:32:08.514 MSK >STATEMENT: create unique index _reference643_bydatakey_rr on _referencechngr643(_IDRRef, _NodeTRef, _NodeRRef); alter table _referencechngr643 cluster on _reference643_bydatakey_rr;
< 2020-04-09 10:32:08.515 MSK >WARNING: there is no transaction in progress
Мы наши таблицу с которой связана ошибка - _referencechngr643
Простейший вариант очистить таблицу, если повезет (немного данных) может помочь
postgres=# \c demo
demo=# SELECT * FROM _referencechngr643;
Картинка (обрезок).
demo=# TRUNCATE _referencechngr643;
Если не повезло, нужно смотреть обработкой 1CDBStorageStructureInfo v2.1
что за объект
Справочник.ВидыОпераций.Изменения
После очистки Справочник.ВидыОпераций.Изменения
можно попробовать выгрузить, загрузить Справочник.ВидыОпераций через xml
В данном случае это не поможет, потому что справочник Справочник.ВидыОпераций.Изменения не выгружается через xml.
2. Будем решать вопрос средствами PostgreSQL
Итак наша ошибка:
Попытка вставки неуникального значения в уникальный индекс:
ERROR: could not create unique index "_reference643_bydatakey_rr"
DETAIL: Key (_idrref, _nodetref, _noderref)=(\x8e02283452a573354532b8d7a08ab2ae, \x00000009, \x9d04902b34af533b11e2c757fa890d98) is duplicated.
Создадим запрос для таблицы
Как найти повторяющиеся записи в PostgreSQL
Размещение данных 1С:Предприятия 8. Таблицы и поля
1CDBStorageStructureInfo v2.1
Платформа 8.3 → Битый dt-шник
Ошибка при загрузке dt файловой базы в PostgreSQL:
Ошибка загрузки информационной базы. В информационную базу загружены не все данные
по причине:
Нарушено условие уникальности данных.
Сообщение при загрузке в 1с:
Попытка вставки неуникального значения в уникальный индекс:
ERROR: could not create unique index "_reference643_bydatakey_rr"
DETAIL: Key (_idrref, _nodetref, _noderref)=(\x8e02283452a573354532b8d7a08ab2ae, \x00000009, \x9d04902b34af533b11e2c757fa890d98) is duplicated.
В логе PostgreSQL смотрим:
< 2020-04-09 10:32:08.514 MSK >ERROR: could not create unique index "_reference643_bydatakey_rr"
< 2020-04-09 10:32:08.514 MSK >DETAIL: Key (_idrref, _nodetref, _noderref)=(\x8e02283452a573354532b8d7a08ab2ae, \x00000009, \x9d04902b34af533b11e2c757fa890d98) is duplicated.
< 2020-04-09 10:32:08.514 MSK >STATEMENT: create unique index _reference643_bydatakey_rr on _referencechngr643(_IDRRef, _NodeTRef, _NodeRRef); alter table _referencechngr643 cluster on _reference643_bydatakey_rr;
< 2020-04-09 10:32:08.515 MSK >WARNING: there is no transaction in progress
Мы наши таблицу с которой связана ошибка - _referencechngr643
Простейший вариант очистить таблицу, если повезет (немного данных) может помочь
postgres=# \c demo
demo=# SELECT * FROM _referencechngr643;
Картинка (обрезок).
demo=# TRUNCATE _referencechngr643;
Если не повезло, нужно смотреть обработкой 1CDBStorageStructureInfo v2.1
что за объект
Справочник.ВидыОпераций.Изменения
После очистки Справочник.ВидыОпераций.Изменения
можно попробовать выгрузить, загрузить Справочник.ВидыОпераций через xml
В данном случае это не поможет, потому что справочник Справочник.ВидыОпераций.Изменения не выгружается через xml.
2. Будем решать вопрос средствами PostgreSQL
Итак наша ошибка:
Попытка вставки неуникального значения в уникальный индекс:
ERROR: could not create unique index "_reference643_bydatakey_rr"
DETAIL: Key (_idrref, _nodetref, _noderref)=(\x8e02283452a573354532b8d7a08ab2ae, \x00000009, \x9d04902b34af533b11e2c757fa890d98) is duplicated.
Создадим запрос для таблицы
_referencechngr643
выводящий повторяющиеся записи:
Как найти повторяющиеся записи в PostgreSQL
select
_nodetref,
_noderref,
_idrref, count(*) from
_referencechngr643 group by
_nodetref,
_noderref,
_idrref HAVING count(*) > 1;
\x00000009 | \x9d04902b34af533b11e2c757fa890d98 | \x90a27b112207742446ec93ee478ec1d1 | 2
\x00000009 | \x9d04902b34af533b11e2c757fa890d98 | \x8e02283452a573354532b8d7a08ab2ae | 2
\x00000009 | \x9d04902b34af533b11e2c757fa890d98 | \xa69d3ff7873e291d48644a507a39f06b | 2
\x00000009 | \x9d04902b34af533b11e2c757fa890d98 | \x9a8b53541966765449d0031809109897 | 2
\x00000009 | \x9d04902b34af533b11e2c757fa890d98 | \xbd6f371cc86afff24983dc095af41b21 | 2
Пример обращения по конкретному условию
where _noderref=E'\\x9d04902b34af533b11e2c757fa890d98'
Introduction to inserting PostgreSQL records with Unicode characters
demo=# select _nodetref, _noderref, _idrref
from _referencechngr643 where _noderref=E'\\x9d04902b34af533b11e2c757fa890d98';
Однако запросом удалить дубликаты записей мы не сможем, из за отсутствия первичного
ключа. (Будут удалены все записи)
Удалим повторяющиеся записи выгрузив таблицу в файл, отредактировав, а потом
загрузить обратно.
Выгрузим таблицу в файл
demo=# COPY _referencechngr643 TO '/tmp/file.csv' CSV;
COPY 565
Сделаем копию.
demo=# COPY _referencechngr643 TO '/tmp/file-cop.csv' CSV;
COPY 565
В файле мы должны найти и удалить все задвоенные записи, например
\x90a27b112207742446ec93ee478ec1d1
Сохранить файл.
Очистить таблицу
demo=# TRUNCATE _referencechngr643;
Загрузим таблицу из файла
demo=# COPY _referencechngr643 FROM '/tmp/file.csv' CSV;
COPY 560
demo=# REINDEX TABLE _referencechngr643;
REINDEX
Проверка:
demo=# COPY _referencechngr643 TO '/tmp/file-ver.csv' CSV;
COPY 565
Поскольку при загрузке dt реиндексация не прошла до конца:
postgres@u1804$ reindexdb demo
1С И Linux: Ошибка При Загрузке Dt Файловой Базы В Postgresql >>>>> Download Now
ОтветитьУдалить>>>>> Download Full
1С И Linux: Ошибка При Загрузке Dt Файловой Базы В Postgresql >>>>> Download LINK
>>>>> Download Now
1С И Linux: Ошибка При Загрузке Dt Файловой Базы В Postgresql >>>>> Download Full
>>>>> Download LINK wf