Всем добрый день.
Умерла база (шифратор), имеется бэкап в sql-формате.
Проблема, что при загрузке psql --dbname=buh --username=postgres < 1.sql
выдает ошибку
ERROR: lenght for type mchar/mvarchar must be at least 1
LINE 7: _code mvarchar(0) NOT NULL,
SET client_encoding = 'UTF8';
SET standard_conforming_strings = off;
SET check_function_bodies = false;
SET client_min_messages = warning;
SET escape_string_warning = off;
SET default_tablespace = '';
SET default_with_oids = false;
SET search_path = "public", pg_catalog;
CREATE TABLE "_acc15" (
"_idrref" bytea NOT NULL,
"_version" int4 NOT NULL,
"_marked" bool NOT NULL,
"_predefinedid" bytea NOT NULL,
"_parentidrref" bytea NOT NULL,
"_code" mvarchar(0) NOT NULL,
"_description" mvarchar(0) NOT NULL,
"_orderfield" mvarchar(0) NOT NULL,
"_kind" numeric(1,0) NOT NULL,
"_offbalance" bool NOT NULL,
"_fld455" bool NOT NULL,
"_fld456" mvarchar(0) NOT NULL,
"_fld10900" numeric(7,0) NOT NULL,
"_fld457" bool NOT NULL,
"_fld458" bool NOT NULL,
"_fld459" bool NOT NULL,
"_fld460" bool NOT NULL
);
ALTER TABLE "_acc15" OWNER TO "postgres";
выдает ошибку
ERROR: lenght for type mchar/mvarchar must be at least 1
LINE 7: _code mvarchar(0) NOT NULL,
Из форумов нашёл описание подобной ошибки.
Ошибка возникает из-за того, что PostgreSQL отсутствует специальный тип данных "mvarchar" добавляемый патчем. Если же вы используйте сборку от Ethersoft, то проблема чаще всего вызвана тем, что вы создаёте базу данных из pgAdmin, а не из 1C. Базу данных нужно создавать с помощью 1C.
База создана из 1С, но в пустой присутствуют не все таблицы. Те, которые уже есть - заливаются данными без проблем, а вот тех, которые нет - не создаются.
Кто-нибудь сталкивался с подобной проблемой и поборол её?
Решено. Для записи. Нашел в интернете пару таких же вопросов, следовательно проблема очень редкая, но встречается.
Возможно проблема pg_dump старых версий, но были неправильно выгружены переменные mvarchar(0) и mchar(0). Они не могут быть нулевой величины.
Решилось заменой в дампе на значения неопределенной величины (mvarchar и mchar). Данные загружены, 1С в рабочем состоянии, выгрузка в dt прошла.
Про
Я не работал с с паченой 1С
Я не работал с с паченой 1С PostgreSQL, но у меня есть мысль по этому поводу.
Во-первых, никто не мешает поправить .sql файл с дампом базы, прописав нужную длину для поля _code. Попробуйте, возможно ничего больше и не понадобится.
Ещё кое-где пишут, что причиной такой ошибки может стать неправильное создание БД, которая создаётся в неправильной кодировке. В этом случае, БД надо прибить, а потом создать по новой сразу с указанием правильной кодировки