Специальный FAQ (под ред. Виктора Вислобокова)

В этот FAQ я собираю вопросы, которые мне показались интересными и заслуживающими внимания. Здесь не будет тех же вопросов что в переводе англоязычного FAQ. Вопросы не ограничиваются какой-то конкретной областью применения или настройки PostgreSQL.

Авторские права и условия распространения


По идейным соображениям, вся информация в этом FAQ предоставляется на условиях лицензии Creative Commons CC-BY-SA. Если вы не согласны с условиями этой лицензии - откажитесь от использования данного FAQ, если вы автор одного из ответов и против использования вашего материала под этой лицензией, напишите на admin@postgresql.ru.net и ваш материал будет удалён из данного FAQ.

Присылайте свои вопросы на адрес: admin@postgresql.ru.net

Общие вопросы


Q001: При изменение структуры БД иногда требуется на время отключить FOREIGN KEY. Как это сделать?
Q002: Как скачать самые последние исходные тексты (исходники) PostgreSQL из CVS?
Q003: Почему выдаёт ошибку при создании функции, где в качестве параметра я использую имя таблицы?
Q004: Как мне написать запрос, делающий SELECT на таблицу, имя которой получено в подзапросе?

Проблемы при установке


Q100: Я хочу установить Holdem Manager, но у меня не получается. Почему вы не хотите помочь мне установить PostgreSQL, который входит в его состав?
Q101: Не знаю как поставить PostgreSQL на Windows. Что делать?
Q102: Во время установки PostgreSQL на Windows получаю сообщение об ошибке "Invalid user specified: Logon Failure: Unknown user name or bad password". Что делать?
Q103: Во время установки PostgreSQL на Windows получаю сообщение об ошибке "Invalid User specified: Logon Failure: The user has not been granted the requested logon type at this computer". Что делать?
Q104: Во время установки PostgreSQL на Windows получаю сообщение об ошибке "Failed to create process for initdb: 1385!". Что делать?
Q105: Регистрирую сервис так: pg_ctl register -N postgres_svc -w -D %windir%\PostgreSQL\data и вылазит ошибка номер 1057. Что это за ошибка и по какой причине сервис не может быть зарегистрирован?
Q106: Во время установки выдает ошибку: Сервис 'Secondary Logon' не запущен. Этот сервис необходим для инициализации кластера базы данных. Пожалуйста, запустите сервис и попобуйте еще раз. Что делать?
Q107: Во время установки, на этапе Loading additional SQL modules выскочило сообщение: "problem runing post instal step/instalation mya not complete corecltly.error reading file c:/postgresql/8.4/data/postgresql.cfg". Что делать?
Q108: Не запускается сервис. Выдаёт: "More help is available by typing NET HELPMSG 3534". Что делать?
Q109: Во время установки выдаёт: "Внутренняя ошибка поиска учётной записи: Сопоставление между именами пользователей и идентификаторами безопасности не было произведено". Что делать?
Q110: Во время установки выдаёт: "Failed to establish a connection to '127.0.0.1'". Что делать?
Q111: При старте в логе вот такое сообщение: "MSD FATAL: the database system is starting up". Как исправить эту ошибку?
Q112: Устанавливаю PostgreSQL повторно и у меня спрашивает пароль: "Please provide a password for the database superuser and service account (postgres)...". Не понимаю где его взять?
Q113: Во время установки, на этапе инициализации кластера БД выскочило сообщение: "Problem running post-install step. Installation may not complete correctly. The database cluster initialization failed." Что делать?

PostgreSQL и 1C


Q201: Будет ли работать PostgreSQL из дистрибутива или скаченный с оригинального сайта PostgreSQL с 1C?




Общие вопросы


Q001: При изменение структуры БД иногда требуется на время отключить FOREIGN KEY. В oracle это делается так

ALTER TABLE TABLE MODIFY CONSTRAINT constraint ENABLE/DISABLE
А как это делается на postgresql?

A001: Сделайте все FOREIGN KEYS, которые хотите отключить на время, DEFERRED (см. man по FOREIGN KEY). Потом в DDL-транзакции в начале просто указывайте SET CONSTRAINTS ALL DEFERRED; и целостность базы будет проверяться только в самом конце при операции COMMIT (Автор совета: Иван Золотухин).

Q002: Как скачать самые последние исходные тексты (исходники) PostgreSQL из CVS?

A002: Создайте какой-либо каталог или перейдите в каталог, в котором у вас есть права на запись. Выполните последовательно:

cvs -:pserver:anoncvs@anoncvs.postgresql.org:/projects/cvsroot login
cvs -z3 -:pserver:anoncvs@anoncvs.postgresql.org:/projects/cvsroot co -P pgsql
Подробности смотрите на странице: http://www.postgresql.org/docs/current/static/anoncvs.html

Q003: Почему выдаёт ошибку при создании функции, где в качестве параметра я использую имя таблицы?

A003: Потому что любая функция (хранимая процедура) должна быть скомпилирована до начала её использования. А при компиляции PostgreSQL не знает не только типов полей той таблицы, которую вы планируете использовать в функции, но и даже вообще существует ли она. Поэтому проверка на соответствие типов и на имена полей становится невозможным, вследствие чего вы и получаете ошибку. Таким образом, использование имён таблиц в качестве аргументов в функциях НЕВОЗМОЖНО. Вы должны явно указывать имя таблицы, если хотите использовать её в запросе.

Q004: Как мне написать запрос, делающий SELECT на таблицу, имя которой получено в подзапросе?

A004: Любой запрос перед началом выполнения должен быть скомпилирован. Но в момент компиляции PostgreSQL не знает какое имя таблицы вернёт подзапрос и вернёт ли он вообще какое-либо имя таблицы, а также будет ли существовать такая таблица. Таким образом, проверка на соответствие типов полей и вообще на наличие таких полей в дальнейшем становится нереальным, план запроса построить невозможным и как следствие вы получите ошибку на любые такие попытки. Поэтому, подстановка имени нужной таблицы во время запроса НЕВОЗМОЖНА. Вы должны явно указывать имя таблицы, если хотите использовать её в запросе.




Проблемы при установке


Q100: Я хочу установить Holdem Manager, но у меня не получается. Почему вы не хотите помочь мне установить PostgreSQL, который входит в его состав?

A100: Потому что Holdem Manager - это игра в покер и поставить вы его можете только с двумя целями: развлечение или заработок денег. Если вы зарабатываете на покере - наймите специалиста, который установит и настроит вам всё, что нужно. Если вы развлекаетесь, то мы не хотим тратить свои силы и время, чтобы вы могли развлекаться. И в любом случае, дальнейшая польза сообществу PostgreSQL от вас - нулевая, зачем нам тратить на вас время? Исключения могут быть сделаны лишь для пользователей, имеющих уровень компетенции "администратор Windows", которым не надо объяснять, что означает "посмотреть логи", "вручную удалить службу", "почистить реестр" и т.д., если вопросы этих пользователей касаются чётко PostgreSQL.

Q101: Не знаю как поставить PostgreSQL на Windows. Что делать?

A101: Для начала прочитать статью: Установка PostgreSQL 8.3 на Windows XP или Установка PostgreSQL 9.0.1 на Windows 7. Возможно вам больше ничего и не понадобится.

Q102: Во время установки PostgreSQL на Windows получаю сообщение об ошибке "Invalid user specified: Logon Failure: Unknown user name or bad password". Что делать?

A102: (Автор совета Bruce Modick). Зайдите в Панель Управления Windows, в управление пользователями и сделайте пользователя postgres членом группы Пользователи.

Q103: Во время установки PostgreSQL на Windows получаю сообщение об ошибке "Invalid User specified: Logon Failure: The user has not been granted the requested logon type at this computer". Что делать?

A103: (Автор совета Bruce Modick). Зайдите администратором в настройки Локальных Политик Безопасности и для учётной записи postgres предоставьте права "Access this computer from the network" (Доступ к данному компьютеру из сети).

Q104: Во время установки PostgreSQL на Windows получаю сообщение об ошибке "Failed to create process for initdb: 1385!". Что делать?

A104: (Автор совета Bruce Modick). Зайдите администратором в настройки Локальных Политик Безопасности и для учётной записи postgres предоставьте права "Log on Locally".

Q105: Регистрирую сервис так: pg_ctl register -N postgres_svc -w -D %windir%\PostgreSQL\data и вылазит ошибка номер 1057. Что это за ошибка и по какой причине сервис не может быть зарегистрирован?

A105: (Автор ответа msr). Service "service_name" faild with error: "System error. Code 1057. Имя учетной записи задано не верно или не существует, или же неверен указаный пароль".

Q106: Во время установки выдает ошибку: Сервис 'Secondary Logon' не запущен. Этот сервис необходим для инициализации кластера базы данных. Пожалуйста, запустите сервис и попобуйте еще раз. Что делать?

A106: Зайдите администратором. Найдите диспетчер служб (Службы или Services). Найдите в списке службу с названием 'Secondary Logon' и запустите её, щёлкнул правой кнопкой мыши.

Q107: Во время установки, на этапе Loading additional SQL modules выскочило сообщение: "problem runing post instal step/instalation mya not complete corecltly.error reading file c:/postgresql/8.4/data/postgresql.cfg". Что делать?

A107: Попробуйте проверить права доступа на каталог "c:/postgresql/8.4/data". Возможно, по какой-то причине для этого каталога установлен флаг read-only (только чтение). Если это так, уберите его и запустите установку заново.

Если это не помогает, то предлагается вот такой рецепт от cx@ukr.net:

  1. В службах запускаем "Вторичный вход в систему" и ставим тип запуска - "Автозапуск"
  2. Создаём нового пользователя в системе с названием латинскими буквами и правами администратора - к примеру "Sexy"
  3. Жмём "Выход из системы" и входим с учётной записью "Sexy"
  4. Запускаем инсталлятор PostgreSQL 9.x x64 от имени администратора и наслаждаемся ЧИСТОЙ установкой!!! Wow!!!
  5. Проверяем работоспособность сервера подключением к template1 из psql - "psql -U postgres -W template1" (на запрос ввести пароль, указанный при инсталляции!)
  6. Выходим из учётной записи "Sexy" и заходим в нашу обычную, грохаем учётную запись "Sexy" со всеми файлами.
  7. Пишем премногую благодарность мне на cx@ukr.net за сэкономленых несколько часов (или больше, кому как) времени!

Q108: Не запускается сервис. Выдаёт: "More help is available by typing NET HELPMSG 3534". Что делать?

A108: Попробуйте сделать следующее:

  1. Зайдите администратором. Найдите диспетчер служб (Службы или Services).
  2. В списке служб найдите PostgreSQL и щёлкните правой кнопкой мыши. Из появившегося меню выберите Свойства (Properties)
  3. В диалоговом окне свойств перейдите на вкладку Start Session (Вход в систему). На этой вкладке есть два варианта выбора "С учётной записью" и "С системной учётной записью". Измените вариант выбора на "С системной учётной записью" (галочку "Разрешить взаимодействие с рабочим столом" не ставить), нажмите "Применить" и "Ок". Должно помочь.

Q109: Во время установки выдаёт: "Внутренняя ошибка поиска учётной записи: Сопоставление между именами пользователей и идентификаторами безопасности не было произведено". Что делать?

A109: Такая ошибка может быть вызвана тем, что "Компьютер и Полное имя" должны быть на английском языке (информацию предоставил: shurickan).

Q110:: Во время установки выдаёт: "Failed to establish a connection to '127.0.0.1'". Что делать?

A110:

  1. Открываем в Блокноте файл C:\Windows\system32\drivers\etc\hosts
  2. Удаляем существующий текст, относящийся к 127.0.0.1 и localhost
  3. Пишем строку: "127.0.0.1 localhost" и сохраняем файл
  4. Перезапускаем службу PostgreSQL.
Должно работать!

Q111: При старте в логе вот такое сообщение: "MSD FATAL: the database system is starting up". Как исправить эту ошибку?

A111: На самом деле - это не ошибка. Просто PostgreSQL ругается, что к нему делаются попытки подключиться, хотя он ещё только запускается.

Q112:Устанавливаю PostgreSQL повторно и у меня спрашивает пароль: "Please provide a password for the database superuser and service account (postgres)...". Не понимаю где его взять?

A112: По идее взять нужно из своей же головы - вспомнить, что вводили ранее. Если на голову надежды мало, то попробуйте так: Пуск -> Все программы -> Стандартные -> Выполнить. Далее введите:

net user postgres postgres
после чего пароль пользователя postgres будет таким же как и имя пользователя, т.е. тоже postgres. (за рецепт спасибо surmaless)

Q113:: Во время установки, на этапе инициализации кластера БД выскочило сообщение: "Problem running post-install step. Installation may not complete correctly. The database cluster initialization failed." Что делать?

A113: Причин может быть великое множество. Например, установка старой версии PostgreSQL, в которой не учтены сервис паки Windows. Или установка PostgreSQL на машину в домене, где собственные политики безопасности мешают нормальной установке PostgreSQL. Или по какой-то причине работу инсталлятора заблокировал антивирус.

Рекомендации следующие: найдите лог инсталлятора, который обычно находится в \WINDOWS\TEMP (возможно также для старых версий в самом каталоге установки PostgreSQL) и прочитайте сообщения, которые там написаны. Возможно это поможет понять в чём собственно проблема.

Также советую не забывать совет в вопросе Q107, касающийся установки PostgreSQL с пользователем-администратором, а не пользователем postgres




PostgreSQL и 1C


Q201: Будет ли работать PostgreSQL из дистрибутива или скаченный с оригинального сайта PostgreSQL с 1C?

A201: Нет, не будет. Для своей работы 1C использует специальный тип данных, но есть и другие отличия. Смотрите сюда: http://v8.1c.ru/overview/postgres_patches_notes.htm. Также посетите ещё и эту страницу: http://wiki.etersoft.ru/PostgreSQL.

Комментарии

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

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

Ошибка при установки PostgreSQL

Добрый день. Во время установки PostgreSQL на Windows Vista Home Basic получаю сообщение об ошибке "Failed to create process for initdb. Прочитал рекомендацию о настройках Локальных Политик Безопасности, но так как в данной версии Windows эта оснастка отсутсвует не могу воспользоваться советом. Есть другие способы решения этой проблемы? Спасибо.

не знаю где тут задать новый вопрос

у меня возникла проблема в начале установки
a data directory is registered in ***unknown variable poctgresqlini*** but is neither empty , or a recognisable data directory.
вот такую надпись выдает , что делать?? ничего подобного не из вышеприведенных примеров нету
у меня Windows 7
Заранее спасибо

Сообщение об ошибке дословно

Сообщение об ошибке дословно говорит, что "либо каталог data в который происходит установка пуст, либо не распознан (видимо имеется в виду, что он не существует)". Если исходить из логики, видимо либо не хватает прав на создание такого каталога, либо на запись в него. Проверьте, что указали нормальное имя каталога для установки. Если здесь всё ок, попробуйте рецепт:
http://postgresql.ru.net/docs/extented_FAQ.html#Q107

как раз после этой операции с

как раз после этой операции с ,,флажками ,, и получил вот такое сообщение системы

Операция с "флажками" тоже

Операция с "флажками" тоже наверное не просто так была затеяна? Дальше по рецепту отрабатывали? Что я из вас диагностику клещами тяну?

Совершенно верно.

Изначально у меня просто выдавало ошибку в конце установки, якобы какой-то файл не найден, мой знакомый посоветовал скачать свежую версию пострег, т.к.по всей видимости у него инсталятор для XP, а у меня 7-ка. (он мне на флешку весь нужный софт скинул( позже он просто сдался, не знает что у меня за траблы, у него все ровно стало с первого раза)). Далее скачал с оф-сайта последнюю версию(в процессе я их 5 штук последних пробовал установить) Напоролся на очередную ошибку системы, по описанию произвел снятие ,,флажка,, с папки data но при чем у меня это как раз получилось только через создание второй учетной записи, (с моей флажек не менялся) . и после того как я по ,,рецепту,, поставил автозапуск вторичного входа, создание учетной записи у меня в самом начале установки после загрузки инсталлятора на ОБОИХ учетных записях выдает одинаковую ошибку. Так что далее просто не совсем понимаю как следовать инструкции.
Прошу прощения, может где-то че-то не допонимаю, просто с компом общаюсь на уровне ,,ТРОЕЧКИ,,
Заранее спасибо за понимание и помощь.
Windows 7 у меня стоит лицензионный со всеми подписями и регами, так что здесь косяки исключены.

Ну так: 1. Возьмите самую

Ну так:
1. Возьмите самую располследнюю версию PostgreSQL
2. Снесите то что поставили и что так и не работает
3. Удалите каталог вручную, если он остался
4. Удалите учётную запись postgres из списка пользователей
5. Попробуйте с самого начала снова с последней версией

Ура

Убил все что можно было, поставил пострег через создание новой учетной записи пользователя с правами админа , теперь дело за ХМ и настройкой, Спасибо за помощь!!!
Огромное спасибо!!!!!!!

Не подключается к серверу

Все сделал точно по инструкции,несколько раз,не раз прочем пр овсевозможные проблемы, в ручную включить,запустить или что то еще ен могу,т.к. область выделана серым цветом,тоесть это действие невозможно,виндовс xp sp3, принтскрины прилагаются, огромная просьба помочь

Ps.если картинки не видын ссылки на радикал

http://s017.radikal.ru/i418/1202/04/038d4eaf7d2d.jpg
http://s018.radikal.ru/i521/1202/4c/43d44a0cfbf7.jpg
http://s018.radikal.ru/i526/1202/c4/815efafc5ef5.jpg

Ничего из вашего поста

Ничего из вашего поста непонятно: какие были ошибки, зачем делали несколько раз, запущен ли у вас сейчас сервер или он просто не сконфигурирован для работы по TCP/IP.

Сродни ситуации: "Я купил машину и не могу на ней ездить. Огромная просьба помочь".

не запцскается сервер,не находи сервер, выдает ошибку(скрины)

Я же все конкретно по пунктам написал, ставил по инструкции с вашего сайта
На скринах видно что не запущен,разве нет??? не запущен
Когда нажимаю на красный крестик, ввожу пароль выдает ошибку(скрин прилагается)
Удалил 8.4,удалил папку
Поставил 9.1 тоже все по инструкции по ссылкам,проблема та же
Пробовал через Администрирование-службы -запустить не запускается(тоесть серого цвета как на скринах-нет возможности нажать)

Про "сконфигурирован для работы по tcp/ip" не в однйо инструкции по установке не видел
Пожалуйста посмотрите скрины, там запущен админ

pgAdmin - это СТОРОННЯЯ

pgAdmin - это СТОРОННЯЯ программа, никакого отношения к серверу не имеющая. И кроме скринов этого самого pgAdmin и ошибки его подключения, я больше ничего не вижу. О том, были ли какие-либо ошибки при установке вы не упомянули.

Ошибки

Holdem Manager Setup?

До свидания. Идите в поддержку Holdem Manager

Вежливость ваша самая сильная черта

НО, причем тут холдем менеджер если не работает Posgresql???? Удаляю все через юнистал тулс, устанавливаю Postgress мне сообщение что уже установлено,так причем тут холдем менеджер??? У меня проблемы с установкой posqresql

PosgresQl

Пишу в 3 раз, при установке не запускалась,не работала, удаляю через юнистал тулс чищу все папки, устанавлию,получаю сообщения о том что уже установлена, но нигде ее нету...

http://s018.radikal.ru/i528/1202/7e/ae04515f0613.jpg

Если вы обратили внимание, то изначально я писал чт оустанавливал posgresql по инструкции с вашего сайта выполняя все точь в точь по пунктам

Простите, но как я уже писал

Простите, но как я уже писал мне неинтересно поддерживать пользователей Holdem Manager. У меня нет ни времени, ни желания разбираться в чём кривость Holdem Manager Setup, что он неправильно ставит и что неправильно сносит.

Именно поэтому вы в итоге и получаете сообщения "о том что уже установлена, но нигде ее нету..."
Оказывается есть. Надо сносить руками службу, которая у вас осталась болтаться в Виндоус, возможно руками опять же зачащать реестр, возможно удалять системного пользователя postgres. Как? Вопросы относящиеся к администрированию Винды, а не PostgreSQL.

Повторяю №3 раз

Я устанавливал Postgresql используя статью вашего сайта по установке, и скачивал ее по ссылке из этйо статьи, и устанавливал строго следуя всем пунктам

Пользователя удалял через командную строку,он удален
Программа удалена через юнистал тулс с чисткой реестра,юнистал тулс автоматически ищет сопутсвующие програмы и другие файлы и удает их,после чег ов ручную почистил диск С

Опять же повторил все,с приложением посгрес скачаным по ссылке с вашего сайта, (версия 8.4) и получил ответ что такая программа уже установлена

Вы можете повторить ещё раз

Вы можете повторить ещё раз 5. А я могу повторить, что всё что я описал У МЕНЯ работает. И у очень многих других людей тоже. Будем дальше в таком же ключе общаться или перейдём к конструктиву? (см. что нужно сделать в предыдущем ответе)

Удалять системного

Удалять системного пользователя postgres,если вы про удаление пользователя postgres через "cmd" то я это уже делал 2 раза, но при запуске инсталятора, опять индикации о наличии 8.4

Ещё я про удаление службы

Ещё я про удаление службы вручную и чистку рееста

Не могу скинуть пароль,

Не могу скинуть пароль, сделал все так как написано, зашел в "выполнить", ввел нужную команду, но пароль "posgres" не подходит, подскажите пожалуйста что делать

A112:

Не могу установить программу,не принимает пароль.

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

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

Back to top

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