v8: FreeBSD & Postgres с патчами от 1C #301933


#0 by Hobbit1985
Очень интересует, смог ли кто нибудь, пользуясь патчами: Пропатчить постгрес так, чтоб в нем могла нормально создаваться Информационная база 1С. Все мои попытки приводили к успешной копмиляции постгреса.. и его запуску, но вот создаваться база не хотела, поэтому хочется узнать может кто уже справился с такой задачей и может поделиться решением.
#1 by Ay49Mihas
Удавалось, тока на линуксе. Самый прикол - при создании БД командой initdb добавить туда параметр -E WIN
#2 by Ay49Mihas
Прогнал, -E UTF8 или --encoding=UTF8
#3 by Hobbit1985
Да, дело в том что на Линуксе, довольно легко удается поставить Postgres, поторый уже скомпилирован под него и в архивах готовые бинарники, которые просто копируются куда нужно. Ay49Mihas, или вам удавалось именно наложить патчи на исходники Чистого Постгреса и создать в нем информационную базу?
#4 by Ay49Mihas
Именно наложить патчи и перекомпилить, правда, я использовал OpenSuSE и src.rpm от неё. Но, думаю, к портам присобачить несложно будет. Напиши подробнее, что за проблемы возникают? Инициализация базы, о которой я написал, выполняется при первом старте PostgreSQL из /etc/rc.d- скрипта. То есть, добавлять опцию надо именно в нём. Несовместимость дистрибутивов именно на этом и закончилась.
#5 by Ay49Mihas
+4 Не могу найти тему, но на мисте я об этом писал.
#6 by Hobbit1985
Скачиваю postgresql-8.2.4.tar.gz и распаковываю в /usr/distr/postgresql-8.2.4/ cd /usr/distr/postgresql-8.2.4/ mkdir patches cd patches/ ftp patch -d .. –p0 < 1c_FULL_82-0.14.patch ftp patch -d .. –p1 < postgresql-1c-8.2.patch ftp patch -d .. –p1 < applock-1c-8.2.4.patch Вроде бы Постгрес должен быть пропатчен теперь… но, патч единственный патч applock-1c-8.2.4.patch не изменяет исходники как положено, а создает файлы .rej , т.к. там небольшое количество изменений я вручную дописываю изменения из патч файла в исходники. Вроде бы готово и можно компилировать… ./configure gmake Но нет… компиляция не проходит успешно… вобщем как выясняется в /usr/distr/postgresql-8.2.4/src/backend/parser/parse.h не хватает нескольких строчек: POSTFIXOP = 609, UMINUS = 610, -           TYPECAST = 611 +          TYPECAST = 611, +          NULLS_P = 612, +          APPLICATION = 613   .... #define UMINUS 610 #define TYPECAST 611 +          #define NULLS_P 612 +          #define APPLICATION 613 После их добавления компиляция проходит успешно. gmake install Устанавливаем модули cd contrib gmake all gmake install Модули устанавливаются тоже успешно (нам нужны только mchar, fulleq, fasttrun - именно они написаны для совместимости с 1с) Далее инициализируем базу и запускаем постгрес… Тут я не думаю что конкретно для 1С есть какие до отличия… по крайней мере они нигде не упомянуты. initdb -D /usr/local/pgsql/data -E ru_RU.UTF-8 Ну вот, теоретически сервер 1С теперь может создать свою базу в Постгрес. Однако у него это не получается. Ниже приведена часть лога Постгреса после чего 1с сервер останавливает создание базы с ошибкой: ERROR:  syntax error at or near "application" at character 24 STATEMENT:  lock table pg_class in application share mode WARNING:  there is no transaction in progress ERROR:  syntax error at or near "(" at character 39 STATEMENT:  create table Config (FileName mvarchar not null primary key, Creation timestamp not null, Modified timestamp not null, Attributes int not null, DataSize int not null, BinaryData bytea not null) WARNING:  there is no transaction in progress Как я понимаю постгрес не понимает систаксиса… а именно: ERROR:  syntax error at or near "application" at character 24 STATEMENT:  lock table pg_class in application share mode Тут он не знает что такое как заблокировать таблицу в  application share mode ERROR:  syntax error at or near "(" at character 39 STATEMENT:  create table Config (FileName mvarchar not null primary key, Creation timestamp not null, Modified timestamp not null, Attributes int not null, DataSize int not null, BinaryData bytea not null) А тут он не может создать тип поля mvarchar. Если я через pgAdminIII пробую выполнить запрос: create table Config (FileName mvarchar not null primary key, Creation timestamp not null, Modified timestamp not null, Attributes int not null, DataSize int not null, BinaryData bytea not null) То он тоже заканчивается с ошибкой. Но если: create table Config (FileName mvarchar not null primary key, Creation timestamp not null, Modified timestamp not null, Attributes int not null, DataSize int not null, BinaryData bytea not null) Запрос выполняется нормально. Так же запрос:  lock table pg_class in application share mode из pgAdminIII выполнить не удается Вот такие действия я делал и результат... в чем может быть отличие FreeBSD от Linux в том плане я не могу предположить потому что не сильно разбираюсь в этих делах... И с Постгрес пришлось знакомиться изза 1С.
#7 by Ay49Mihas
Видимо, mchar всё же не подгрузился - ошибка ругается на объявление mvarchar. Есть подозрение, что он просто не скомпилировался (у меня было именно так), он требовал библиотеки libicu с заголовочными файлами.
#8 by Hobbit1985
Вот дело именно в том что он подгрузился. В базе 1с создала все функции из этих модулей, но вот работают они как то не так, и режим блокировки таблицы, дописанный 1с-никами, тоже не работает. Icu я тоже ставил. В версии под виндовс, либо в уже скомпилированной версии все это работает. Неужели никто больше не пытался поставить Этот Постгрес на FreeBSD...
#9 by Ay49Mihas
Может, патч Бартунов сотоварищи писали только под Линукс...
#10 by перцептрон
, спс
Тэги: Unix / Linux
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С