Здраствуйте.
Я поставил PostgreSQL 8.2.4 на Fedora Core 9. Захожу root'ом в систему и пишу в терминале
LANG=ru_RU.utf-8 /etc/init.d/postgresql start
Появляется сообщение
[root@localhost ~]# /etc/init.d/postgresql start /var/lib/pgsql/DATA IS missing. USE "service postgresql initdb" TO initialize the cluster first.
Подумав, решил инициализировать БД "вручную"
LANG=ru_RU.utf-8 /etc/init.d/postgresql initdb "/var/lib/pgsql/data"
На что Fedora выдала следующее
LANG=ru_RU.utf.8 /etc/init.d/postgresql initdb "/var/lib/pgsql/data" Инициализируется база данных: [ СБОЙ ]
В файле /var/lib/pgsql/pgstartup.log ничего нет. В смысле пусто, его размер равен 0
Подскажите, что мне делать дальше.
Заранее спасибо.
У меня: # service
У меня:
Возможно это важно: у меня selinux выключен!
Попробуйте удалить /var/lib/pgsql, затем удалить и поставить пакеты сервера заново и выполнить всё повторно.
SElinux
SElinux выключен.
Переустановить Postgre, конечно, попробую. Но не спортивно это как-то, имхо...
Переустановил Postgree.
Запускаю
service postgresql initdb
Вылетает с ошибкой. В файле /var/lib/pgsql/pgstartup.log записано:
Что делать? Help???
Ядро собирали
Ядро собирали сами или из дистрибутива?
Меняли что-либо в конфигурации postgresql?
Сколько оперативки у машины?
Сообщение говорит о том, что не хватает памяти. Причём shared памяти.
Скачал
Скачал дистрибутив с оффсайта Fedora.
В postgree ничего не менял. Ставлю конфигурацию для 1С
У машины 2 гига оперативки
Как увеличить shared memory? Postgre не хватает 2 гигов... я в шоке. Может имеет смысл поставить оригинальный Postgree, а потом его пропатчить для 1С (тогда возникает вопрос как его патчить?..)?
Не спешите быть
Не спешите быть в шоке![:) :)](https://pgdocs.ru/sites/all/modules/ccfilter/smileys/ab.gif)
HINT: This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter.
После ваших данных я начинаю трактовать это сообщение по-другому. А именно - PostgreSQL хочет забрать под себя больше памяти чем указано в ядре в shmmax.
Посмотрите:
# sysctl -a|grep shmmax
у меня показывает
kernel.shmmax = 33554432
Что показывает у вас? Попробуйте увеличить с помощью:
# sysctl kernel.shmmax=ЗНАЧЕНИЕ
посмотрите что вам скажет снова при попытке запуска! Экспериментируйте!
Увеличил
Увеличил kernel.shmmax до 40000000 и... заработало!!!
После перезагрузки kernel.shmmax опять становится равен 33554432
Правда заработало только до перезагрузки.
Большое спасибо за помощь.
P.S. Буду признателен, если подскажите как задать значенияkernel.shmmax и kernel.shmmin "навсегда"![;) ;)](https://pgdocs.ru/sites/all/modules/ccfilter/smileys/ad.gif)
Есть такой файл
Есть такой файл /etc/sysctl.conf
Необходимо внести kernel.shmmax и новое значение туда.
Система при загрузке использует все настройки оттуда.
Помогло
Postgre запускается и из виндового pgAdmin'а к нему можно подсоединиться
Но теперь возникла другая проблема. При попытки создать БД с помощью 1С'овской консоли управления серверами 1С Предприятия появляется сообщение об ошибке:
"Ошибка создания информационной базы: Ошибка информационной базы. Ошибка при выполнении операций с информационной базой. Ошибка СУБД: DATABASE не пригоден для использования"
У меня также поднят виндовый Рostgre, для тестов и сравнений с иксовым (его установка - это тоже песня, но для нее я создам другое обсуждение
) В виндовом Postgre база создается. Программисты говорят, что это проблема Postgre...
Может подскажите что-нибудь?
Я не работал со
Я не работал со связкой 1C + PostgreSQL, но слышал, что для работы с 1С нужен ПАТЧЕНЫЙ PostgreSQL.
Вполне возможно дело в этом.
Если и в Windows непатченый PostgreSQL,то наверное нужно копать в сторону прав доступа - имеет ли пользователь, который хочет создать базу 1C все необходимые права для этого?
Также полезно включить логгирование по максимуму и смотреть что пишется в логи.
Postgre патченный,
Postgre патченный, якобы. Виндовый тоже, вроде, патченный
Создаю базу от имени пользователя postgres, созданного при установки Postgre и являющегося суперюзером в Postgre
Логирование в Postgre включу, когда разберусь как это сделать![:) :)](https://pgdocs.ru/sites/all/modules/ccfilter/smileys/ab.gif)
В Linux
В Linux пользователь postgres по умолчанию прописан с авторизацией по ident
Это значит, что этот пользователь может работать ТОЛЬКО с локахоста, если в системе сделать предварительно от root'а:
# su - postgres
В остальных случаях доступ ему запрещён. Проверьте, может быть дело в этом.
Как сменить
Как сменить авторизацию, чтобы пользователь мог работать НЕ ТОЛЬКО с локалхоста?
Если Вы имеете в виду авторизацию в Postgre, то я поправил файлик pg_hba.conf, разрешив авторизацию MD5 из сети и локалхоста.
Насчёт md5 я
Насчёт md5 я точно не помню. Я делал passwd авторизацию в pg_hba.conf после чего надо зайти postgres с локалхоста и выполнить команду ALTER USER для пользователя postgres назначив ему пароль.
Не важно password
Не важно password или md5 проблема не в этом.
При создании базы данных из оснастки "Сервера 1С Предприятия" вылетает вот такое сообщение:
Все библиотеки есть! Проверял. И доступы на них стоят -rwxr-xr-x, как и на других библиотеках. Ставил права -rwxr-xrwx - не помогло
При этом база создается, но при попытки обратиться к ней 1С пишет, что база повреждена.
Я включил подробное протоколирование в Postgre. Вот кусок лога, в котором возникает ошибка:
Вот теперь я точно в шоке. Два дня мучений и все напрасно![:( :(](https://pgdocs.ru/sites/all/modules/ccfilter/smileys/ac.gif)
Судя по мессаге
Судя по мессаге - не объявлен тип mchar
Чтобы этот самый mchar объявить надо либу которая данный тип поддерживает.
mchar.so в состав стандартного PostgreSQL не входит - верно?
Это наверное как раз патченая для 1С часть. Либо патч кривой, ибо есть ещё одна идея, что данная либа требует использяемого стека, а он запрещён в ядре. SElinux точно выключен?
А шокироваться надо от 1C - не могли НОРМАЛЬНУЮ поддержку сделать PostgreSQL и теперь все мучаются от их кривых патчей.
SElinux
SElinux выключен
По крайней мере в /etc/selinux/config прописано SELINUX=disable
Если либа требует используемого стека, то как его разрешить в ядре?
mchar.so, не входит в стандартный Postgre - это есть факт. Я поставил postgresql-contrib, как советую умные дядечки на форумах. Этот пакет как раз и нужен для решения проблем с mchar.so...
От 1С я уже давно не шокируюсь - привык к их закидонам.
Я посмотрел, у
Я посмотрел, у меня в contrib нет mchar.so![:) :)](https://pgdocs.ru/sites/all/modules/ccfilter/smileys/ab.gif)
По дефлолту, исполняемый стек в ядре разрешён. Его как раз может запрещать SELinux, поэтому и спросил.
10 минут поиска в Гугле дали результат.
1. Рекомендую полезную статью:
http://guru.multimedia.cx/pt_gnu_stack/
2. Далее прокурить man на execstack, и попробовать применить на практике.
Если получится - не забудьте отписать!
Также может оказаться полезным и эта мессага:
http://www.ussg.iu.edu/hypermail/linux/kernel/0406.0/0611.html
Кстати вдогонку по материалам этой статьи, попробуйте сделать:
kernel.exec-shield = 0
в /etc/sysctl.conf
и перезагрузить машину с PostgreSQL.
Со стеком
Со стеком разобрался.
Помогло kernel.exec-shield = 0
И то, что для отключения SElinux не достаточно написать SELINUX=disable. Надо еще в гуе SElinux сказать, что Enforcing mode должен быть Disable (какое изменение в конфигурационных файлах вызывает установка этого параметра в гуе я не нашел:( )
Теперь при создании базы ругается по другому:
Ошибка создания информационной базы: ошибка информационной базы. Ошибка при выполнении операций с информационной базой. Ошибка СУБД: ERROR: could NOT LOAD library "/usr/lib/pgsql/mchar.so": libicudata.so.34: cannot open shared object file: No such file OR directory
Только не понятно, почему система не находит библиотеки. В каталоге /usr/lib/pgsql/ есть файлы mchar.so и libicudata.so.34. Видимо, они какие-то "неправильные": версия не та или они не пропатчены под 1С...
Для отключения
Для отключения SELinux достаточно записать в /etc/selinux/config строки SELINUX=disabled и перегрузится. Ничего больше в гуе делать не надо.
Вопрос к вам - откуда взяты mchar.so и libicudata.so? Ну и лишний раз проверить - если ли права на чтение для пользователя postgres у этих файлов?
ЗАРАБОТАЛО!!! Ка
ЗАРАБОТАЛО!!!
Каюсь, я накосячил.
Инициализировал базу в английской локале.
Убив старые настройки Postgre и переинициализировав базу командой
su - postgres -c 'LANG=ru_RU.UTF-8 initdb /var/lib/pgsql/data'
я получил работоспособную систему.
Спасибо за помощь и терпение.
P.S. Запись SELINUX=disabled в /etc/selinux/config не до конца отключает SElinux. Проверил. В гуе поставил Enforcing mode = Enable, но в файле /etc/selinux/config оставил SELINUX=disabled. Перезагрузил и... при создании базы система стала ругаться на стек. Вернул натройки гуя назад, перезагрузил и все заработало. Шайтан, однако.
Вы не
Вы не поняли.
Исполняемым стеком можно рулить через SELinux, если он включен, а если SELinux выключен то, через ту опцию shield о которой я писал ранее.
SELINUX=disabled совершенно точно полностью отключает SELinux. У меня например GUI после этого не даёт выбрать ни одной опции управления SELinux, пока я не включу SELinux и не перегружу машину.
Эх! Ещё бы вы взялись и написали статейку с подробным рецептом по шагам как всё это заставить работать "с нуля". Может возьмётесь?![:) :)](https://pgdocs.ru/sites/all/modules/ccfilter/smileys/ab.gif)
Напишу
Скорее всего, напишу. Потому что буду писать мануал для себя и коллег в конторе. Этот мануал я повешу здесь. Заодно про пляски с бубном вокруг виндовой версии туда засуну.
Хорошо, буду
Хорошо, буду ждать!