Ошибка при инициализации БД

При инициализации БД выдает след. ошибку

postgres@1csrv:/usr/LOCAL/pgsql/bin$ ./initdb -D /DATA
The files belonging TO this DATABASE system will be owned BY user "postgres".
This user must also own the server process.
 
The DATABASE cluster will be initialized WITH locale C.
The DEFAULT DATABASE encoding has accordingly been SET TO SQL_ASCII.
The DEFAULT text search configuration will be SET TO "english".
 
fixing permissions ON existing directory /DATA ... ok
creating subdirectories ... ok
selecting DEFAULT max_connections ... 100
selecting DEFAULT shared_buffers ... 32MB
creating configuration files ... ok
creating template1 DATABASE IN /DATA/base/1 ... ok
initializing pg_authid ... FATAL:  syntax error at OR near "REVOKE" at character 1
STATEMENT:  REVOKE ALL ON pg_authid FROM public;
 
child process exited WITH exit code 1
initdb: removing contents of DATA directory "/DATA"
postgres@1csrv:/usr/LOCAL/pgsql/bin$ 

ОС Slackware 13.37, Postgresql 9.0.3.
Исходники и патчи брал с сайта 1С. Скомпилировалась и установилаь без ошибок.
Подскажите где посмотреть?

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Смотреть как всегда мануал

http://postgresql.ru.net/manual/runtime.html
Например, вам бы точно не помешало указать кодировку отличную от "C".
И кстати, настоятельно советую взять 9.0.7, а не 9.0.3 если вам нужна ветка 9.0.x

С указанием локали и

С указанием локали и кодировки ничего не изменилось...

postgres@1csrv:/usr/LOCAL/pgsql/bin$ ./initdb -D /DATA --encoding=UTF8 --locale=ru_RU.utf8
The files belonging TO this DATABASE system will be owned BY user "postgres".
This user must also own the server process.
 
The DATABASE cluster will be initialized WITH locale ru_RU.utf8.
The DEFAULT text search configuration will be SET TO "russian".
 
fixing permissions ON existing directory /DATA ... ok
creating subdirectories ... ok
selecting DEFAULT max_connections ... 100
selecting DEFAULT shared_buffers ... 32MB
creating configuration files ... ok
creating template1 DATABASE IN /DATA/base/1 ... ok
initializing pg_authid ... FATAL:  syntax error at OR near "REVOKE" at character 1
STATEMENT:  REVOKE ALL ON pg_authid FROM public;
 
child process exited WITH exit code 1
initdb: removing contents of DATA directory "/DATA"

На сайте 1С нет 9.0.7, есть 9.0.3... Это все из-за пачтей, т.к. без них все установилось на ура.

Я не ошибаюсь: вы просите

Я не ошибаюсь: вы просите помощи в вопросе работы продукта, который является модифицированной версией PostgreSQL от 1C, при этом говорите, что без патчей 1C всё работает? Тогда почему не пишите в поддержку 1C?

Я бы ещё попробовал, поставить обычный PostgreSQL, сделать по нему initdb, а затем, сохранив каталог с БД, поставить версию с 1C и уже так попробовать работать. Совсем не уверен, что сработает, но больше ничего подсказать вам не могу - очевидно, что они что-то напортачили в скрипте инициализации БД, но что конкретно - мне неясно.

Ещё одна идея:
попробуйте выполнить команду:
# strings /usr/bin/initdb
у меня результат такой:

REVOKE ALL on pg_authid FROM public;
REVOKE CREATE,TEMPORARY ON DATABASE template1 FROM public;
REVOKE CREATE,TEMPORARY ON DATABASE template0 FROM public;

Возможно вам станет понятно, что не так, когда посмотрите, что выдаёт вам. Тогда всё просто - найдите в исходниках это место и поправьте его, затем пересоберите PostgreSQL

С инициализацией

С инициализацией разобрался... не хватало ICU. Скопилировал, установил и инициализация кластера прошла успешно.
Тепреь возник другой вопрос. При запуске postgresql возникает ошибка

postgres@1csrv:/usr/LOCAL/pgsql/bin$ ./postgres -D /DATA
LOG:  could NOT recognize system time zone
DETAIL:  The PostgreSQL time zone will be SET TO "Etc/GMT-5".
HINT:  You can specify the correct timezone IN postgresql.conf.

вот системное время

postgres@1csrv:/usr/LOCAL/pgsql/bin$ date -R
Tue, 17 Apr 2012 10:02:47 +0600

Почему он меня просит установить GMT-5, когда у меня +6?
В файле postgresql.conf изменял параметр timezone - ошибка повторяется...

А он и не просит. Он говорит,

А он и не просит. Он говорит, что не смог определить часовой пояс системы и поэтому он будет установлен в "Etc/GMT-5". Если изменяли параметр, а ошибка повторяется, значит некорректное значение подставляете или сам postgresql.conf находится не в том месте - PostgreSQL его не видит.

Каким образом Postgresql

Каким образом Postgresql определяет часовой пояс системы? Через перемнные окружения или каким то своим методом? Где это можно помотреть и изменить?
postgresql.conf находится в том же каталоге который был указан при инициализации. Попробовал различные варианты:

timezone = Asia/Yekaterinburg
timezone = 'Asia/Yekaterinburg'
timezone = 600
timezone = +600
timezone = 6:00
timezone = +6:00
timezone = +6
timezone = 6
timezone = YEKST
timezone = 'YEKST'

В последних двух случаях вышла ошибка:

postgres@1csrv:/usr/LOCAL/pgsql/bin$ ./postgres -D /DATA
LOG:  unrecognized time zone name: "YEKST"
FATAL:  invalid value FOR parameter "timezone": "YEKST"

В остальных та же ошибка:
postgres@1csrv:/usr/LOCAL/pgsql/bin$ ./postgres -D /DATA
LOG:  could NOT recognize system time zone
DETAIL:  The PostgreSQL time zone will be SET TO "Etc/GMT-5".
HINT:  You can specify the correct timezone IN postgresql.conf.

Так что программа этот файл видит.
Пробовал устанавливать переменную окружения TZ, но результат тот же...

А как вы устанавливали эту

А как вы устанавливали эту переменную?
У меня в конфиге написано так:

#timezone = unknown                     # actually, defaults to TZ environment
                                        # setting

однако могу сказать совершенно точно, что TZ у меня тоже не установлена. Тогда могу сделать вывод, что часовой пояс берётся из системных установок. Что у вас показывает команда data?

А пробовали устанавливать в конфиге:
timezone = 'Etc/GMT+6'

?

А как вы устанавливали эту

А как вы устанавливали эту переменную?
просто снял комментарий и указал значение:
timezone = Asia/Yekaterinburg

так тоже пробовал - результат аналогичный
А пробовали устанавливать в конфиге:
timezone = 'Etc/GMT+6'

Вопрос снят.
проблему решил использованием скрипта timeconfig. Указал "Hardware clock is set to local time"

Но по идее - это баг

Но по идее - это баг вообще-то! Если в документации написано, что через timezone можно установить, а не устанавливается - это баг. Проверить бы это дело и им запостить.

Тогда баг еще и вот

Тогда баг еще и вот это:
Скомпилировал с опцией --with-system-tzdata=/usr/share/zoneinfo, а при запуске сервера пишет что каталог /usr/local/pgsql/share/timezone отсутствует???

это похоже ошибка сборки - не

это похоже ошибка сборки - не там ищет
сделайте симлинку

Да. Точно. Я уже разобрался.

Да. Точно. Я уже разобрался.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023