You are here: Foswiki>Gnumed Web>TroubleshootPostgreSQLRu (13 Feb 2013, IvanLykov)EditAttach

Проблемы PostgreSQL

Некоторые основные команды приведены на вики-страницах PostgreSQL. Дополнительная информация приведена ниже.

Использование версий PostgreSQL < 8.4

Если столкнулись с проблемами, связанными с установкой/конверсией вакцин (см. лог-файлы) во время преобразования с v13 на v14, переключитесь на использование пакетов 0.8.1/v14.1 GNUmed.

Переход с PostgreSQL 8.3 на 8.4

При использовании инструмента pg_upgradecluster на Debian/Testing в этом потоке зафиксирована небольшая проблема. Имеется множество способов справиться с ней, в том числе:

  • начальная загрузка обновляет базу данных на 8.4 (если вы не в производстве)
  • дамп восстановления с 8.3 -> 8.4 будет также прекрасно работать
  • после факта использования этого сценария проблема прошла

С другой стороны, если пишите в список рассылки или сообщаете об ошибке, то сообщите…

  1. Ваш клиент GNUmed получил успешное подключение входа в общественную базу данных? Если нет, приложите лог-файл клиента.
  2. В каком часовом поясе вы находитесь? GNUmed имел проблемы в некоторых часовых поясах… приложите лог-файл клиента gnumed и файл gnumed.conf
  3. Если пытаетесь использовать локальную базу данных GNUmed
    • Был ли запущен скрипт загрузчика (bootstrapper) в точке уведомления "Мы были очень близки к успеху?" (если нет, см. ниже)
    • Эта версия базы данных GNUmed ранее работала у вас ?
    • Используете ли вы pg_hba.conf по умолчанию, или изменили его? Если редактировали, укажите это.
    • при запущенном debian и в некоторых других системах из командной строки под root выполните команду pg_lsclusters … Что она возвратила?
    • Вы в состоянии "видеть" базы данных, скажем, в PGAdmin III (см. PostgreSQL)?

Если возникли проблемы во время начальной загрузки…

  1. Запущена ли начальная загрузка под root?
  2. Инсталляция Debian Squeeze (testing) страдает от ошибки, в которой допускает сервер базы данных, как часть инсталляции, что может привести к запуску не в кластере во время загрузки. Ссылку на ошибку см. на странице IssuesLinux.
  3. На некоторых системах Postgres будет создавать свои кластеры базы данных под устаревшую кодировку ASCII вместо SQL_ASCII, необходимую UTF-8 через GNUmed для языковой поддержки. Требуется совместимость с шаблонной базой данных, создаваемой через Postgres при установке на основе кодирования, как установленной из текущей локали, так и подтвержденной в этом внешнем потоке. Если ваша локаль была C (или некоторые другие локали), вы можете пострадать. Убедитесь, что ваша локаль настроена на нужный UTF-8 и, затем, либо переинсталлируйте Postgres, либо, если хотите сохранить конфигурационную информацию в pg_hba.conf и postgresql.conf, сделайте резервное копирование любых данных и перетащите затем, и создайте новый кластер базы данных.

    Для получения дополнительной информации см. этот поток GNUmed devel и это сообщение об ошибке не-GNUmed.

    Проблема предполагается через лог-строки, такие как
      "Your PostgreSQL installation seems not to have lc_ctype UTF-8 or C.<br>This will most probably lead to failures of the GNUmed server installation."
      2008-03-30 20:28:45  [PANIC]  (./bootstrap_gm_db_system.py:__create_db@701):  >>>[
                               create database "gnumed_v2" with
                                       owner = "gm-dbo"
                                       template = "template1"
                                       encoding = 'unicode'
                               ;]<<< failed <br>
      2008-03-30 20:28:45  [PANIC]  (./bootstrap_gm_db_system.py:__create_db@701):  exception type : psycopg2.ProgrammingError
      2008-03-30 20:28:45  [PANIC]  (./bootstrap_gm_db_system.py:__create_db@701):  exception value:  Encoding UTF8 stimmt nicht mit 
                                                  der Server-Locale de_DE@euro ??berein
                                                  DETAIL:  Die LC_TYPE-Locale des Servers verlangt die Kodierung LATIN9.

MS Windows

  • Как пользователь Windows, вы можете установить PostgreSQL (рекомендуется 8.3) с помощью инсталлятора, предоставляемого PostgreSQL-сообществом. Обратите внимание на появляющийся диалог настройки.
  • Рекомендуется выбрать 'английский', как 'язык для использования во время установки'.
  • В диалоговом окне 'Настройка службы' рекомендуется поставить галочку 'Установить как службу'. Установите и запишите пароль учетной записи. Это относится к системной учетной записи в Windows, не имеет (пока) ничего общего с суперпользователем базы данных.
  • В 'Инициализировать кластер базы данных' важно поставить галочку 'Принимать подключения на всех адресах', больше ничего не выберайте, кроме 'C' как настройка локали, выберите 'utf8' для обоих - 'кодирование и (сервера)' и '(клиента)'. На этом экране выберите и запишите пароль для суперпользователя базы данных 'postgres'.
  • В диалоговом окне "Включить процедурные языки" поставьте галочку "PL/python'.
  • учтите, когда переведенные файлы исходников закодированы в наборы символов Windows, этот набор символов Windows не совпадает с ISO 8859-1 (см. здесь).

SuSE 10.1

  • установите the python-devel rpm
    • необходим для утилит дистрибутива
  • скачайте и установите psycopg2
  • pg_hba.conf и postgresql.conf находятся в /var/lib/pgsql/
  • не забывайте pg_ctl reload для любых конфигурационных изменений

Debian

  • конфигурационные файлы находятся в /etc/postgresql/8.x/main/

  • некоторые старые различия между несколькими дистрибутивами Linux описаны здесь.

Проверьте и настройте PostgreSQL (цитирую Стивен Даффи)

Обычно, PostgreSQL должен запускаться автоматически при загрузке. Большинство современных дистрибутивов правильно настраивают PostgreSQL, чтобы так сделать. Если вы установили пакет из исходников, могут потребоваться некоторые шаги для получения запуска системы баз данных PostgreSQL.

Во-первых, убедитесь, что запущен демон сервера PostgreSQL. Просто введите следующие строки в командной строке:

$ ps ax | grep "post"

Оно должно вывести что-то вроде

212  ?  S    0:00 /usr/local/pgsql/bin/postgres -i -o -F -D/usr/local/pgsql/...

(Это может быть postmaster, вместо postgres в версии < 8.3)

можно также проверить в /etc/rc.d/ или запустить Linuxconf, rcconf или любой другой дистрибутив, предлагаемый для проверки демонов, которые работают на определенном уровне.

Если postmaster не запущен, найдите соответствующий сценарий-оболочку или включите его на уровне запуска средством, соответствующим вашему дистрибутиву.

Если ничего не помогает, можно настроить его с изменением этих команд под root:

su - postgres
postmaster -D ~postgres/data >logfile 2>&1 &

Вы должны знать, что делаете, чтобы заставить их успешно работать.

Вы должны включить доступ TCP/IP к базе данных. Для того, чтобы это сделать, можно либо добавить параметр '-i' при запуске postmaster (см. выше и ниже), либо выполнить следующие действия:

  • найти и открыть /etc/postgresql/postgresql.conf
  • изменить listen_addresses = "" для любого соответствующего
    • он это раньше назывался tcpip_socket
  • сохраните изменения и перезапустите PostgreSQL
Если нужно добавить параметр '-i' и не знаете, где запускается postmaster:

Если ваш дистрибутив для запуска сервера использует в качестве сценария postgresql, вполне вероятно, для запуска postmaster используется pg_ctl. В этом случае найдите, где pg_ctl выполняется, и добавьте вставку -o \"-i\", как одну из опций pg_ctl. В противном случае, найдите сценарий, из которого выполняется postmaster, и просто добавьте -i в качестве аргумента.
Topic revision: 13 Feb 2013, IvanLykov
 
Download.png
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback
Powered by Olark