Установка Postgres в Windows для использования с Ruby-on-Rails - PullRequest
19 голосов
/ 17 августа 2011

В настоящее время я получаю следующую ошибку:

PGError (FATAL: сбой аутентификации по паролю для пользователя "postgres"):

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

Я хотел проверить свои вызовы SQL на postgres, так как мое приложение регулярно прерывает работу при запуске в Heroku из-за более строгих требований postgres (что я думаю, вероятно, полезно) по сравнению с sqlite 3. Так что у меня есть похожее просьба к этому за устаревшее руководство по установке postgres для использования с ruby ​​на рельсах на windows (7), пожалуйста. Я думал, что это будут быстрые 20 минут загрузки и установки, но через 2 с небольшим часа, и я не думаю, что я еще очень близок. Пока что я:

Скачал и установил Postgres Версия 8.4.8-1 отсюда

Установите мои переменные среды так, чтобы Path (для пользователя) был: C:\Ruby192\bin;C:\Program Files (x86)\PostgreSQL\8.4\bin

Gemfile:

gem 'pg', '0.11.0'  # instead of gem 'sqlite3', '1.3.3'

побежал bundle install для моего приложения rails, казалось бы, успешно, но пока не нашел простого способа проверить правильность установки.

установить database.yml , как указано здесь в:

development:
  adapter: postgresql
  database: db/development
  username: postgres
  password: secret
  host: localhost
  encoding: UTF8
  pool: 5
  timeout: 5000

Я знаю, что мне нужно настроить имя пользователя и пароль для Postgres , может также запустить сервер postgres, подключиться к нему (?) и ввести свой локальный IP-адрес Я подключусь к нему на в конфигурационные файлы где-нибудь , а затем отредактирую один из других .conf файлов в 'C: \ Program Files (x86) \ PostgreSQL \ 8.4 \ data' и т. Д ...

Я думаю, что Rails сделал меня мягким, я задумываюсь над чем-то или это довольно сложно настроить, и я должен просто вернуться к Sqlite3, для которого есть также очень полезный SQLite Manager, плагин Firefox?

Я все еще ищу руководство для начинающих по установке и использованию Postgres для рельсов, но до сих пор меня смущало большинство вещей, на которые я смотрю / пытался следовать, таких как this , this , это , это , это (для Snow Leopard), это (linux).

Любые указатели приветствуются. Спасибо!

Джеймс

Ответы [ 3 ]

72 голосов
/ 20 августа 2011

Подход к установке Postgres на Windows 7 для использования в качестве базы данных PostgreSQL для проекта rails 3 (3.0.7).


Преамбула (вы можете пропустить этот бит)

Итак, первое, на что следует обратить внимание, это то, что Postgres - это не просто расширение файла, отличное от .sqlite3,это целый механизм для управления вашими базами данных.Таким образом, он имеет модель клиент / сервер, из которой вам нужно будет настроить обе системы, чтобы использовать Postgres в качестве базы данных для вашего приложения rails.

Мотивация для прохождения значительных усилий по настройке Postgres по сравнению с почти легким sqliteнастройка: если вы развертываете в Heroku, они в настоящее время используют Postgres, поэтому некоторые из ваших вызовов SQL, которые подходят для sqlite3, прервутся при использовании с Postgres.Гораздо проще отлаживать postgres локально, чем на серверах Heroku.

Поэтому я сделал следующие вещи: (Отказ от ответственности: я мог забыть включить некоторые вещи, которые я сделал ... это заняло у меня48 часов болей и выключений, чтобы заставить его работать ... если следующий совет не работает для вас, тогда огромная (2300 страниц !!), но очень тщательная документация Postgres должна помочь. Я 'Я рекомендую скачать его в любом случае, если вы серьезно относитесь к использованию Postgres, так как в нем много материала, о котором я только что начал понимать значение.) (Второй отказ от ответственности: я почти наверняка нарушил 20 разумных руководств Postgres и раскрыл безопасностьдыры в базе данных Postgres при этом. Если есть какие-то очевидные вещи, с которыми не согласен опытный пользователь Postgres, отредактируйте мой пост.)


.Step 1. Загрузите и установите PostgreSQLv9.0.4-1 из здесь , потому что здесь говорит, что только 9.0.x будет поддерживаться в Windows 7. Iсохранил все параметры по умолчанию и просто использовал «секретный» в качестве пароля при запросе установщиком Postgres для одного (опять же, не совсем уверен, каковы последствия обмена этой информацией в Интернете ... скоро я узнаю, я уверен),Этот пароль понадобится вам на шаге 3.

.Step 2. Измените переменные среды так, чтобы Path ( для системы , а не для пользователя (Я не уверен, важно это или нет)): C:\Program Files\PostgreSQL\9.0\bin
(примечание: я нахожусь на 64-битных окнах, поэтому он не устанавливается для 32-битных в C: \ Program Files (x86)) \ PostgreS ... ')

Не забудьте изменить права доступа к папке PostgreSQL \ 9.0 и удалить все права по умолчанию на чтение папки или содержимого.(Вам также может понадобиться перезагрузить компьютер, чтобы они вступили в силу - спасибо @Gavin - хотя вряд ли).

.Step 3. Протестируйте установку Postgres, пытаясь создать новую базу данных.: Из командной строки: createdb -U postgres mydb_as_postgres.Вам нужно будет ввести пароль сейчас, если нет, возможно, вам сначала нужно запустить сервер (я не могу вспомнить, нужно ли мне это делать или нет).Самый простой способ - через pgAdmin III, который должен быть «pgAdmin3.exe» в папке где-то вроде C:\Program Files\PostgreSQL\9.0\bin.После запуска pgAdmin III слева должна появиться панель «Браузер объектов».В этом должно быть дерево с:

Группы серверов> Серверы> PostgreSQL 9.0 (localhost: 5432)

Щелкните правой кнопкой мыши «PostgreSQL 9.0 (localhost: 5432)» и выберите «Connect».

Команда createdb -U postgres mydb_as_postgres должна создать новую базу данных с именем «mydb_as_postgres», которую вы можете проверить, запустив pgAdmin III и дважды щелкнув «PostgreSQL 9.0 (localhost: 5432)».Под этим должно быть:

Databases (2), в котором должны быть перечислены 2 базы данных с именами mydb_as_postgres и postgres

Я назвал его _as_postgres, потому что часть команды -U postgres сообщает Postgres создать базу данных с пользователем postgres в качестве владельца, который необходимо указать, когда вы не вошли в систему как пользователь postgres. У меня все мои файлы хранятся как пользователь 'AJames', поэтому, если вы одинаковы и хотите продолжать разрабатывать свое приложение, когда вы вошли в систему как другой пользователь, вам нужно сейчас создать роль Postgres для этого пользователя (см. Шаг 4).

. Шаг 4. Через pgAdmin III. Щелкните правой кнопкой мыши Роли входа (которые для меня включены):

Обозреватель объектов> Группы серверов> Серверы> PostgreSQL 9.0 (localhost: 5432)> Роли входа в систему

Щелкните правой кнопкой мыши Роли входа и выберите «Новая роль входа ...» в названии роли введите имя пользователя вашей операционной системы, для меня это AJames, и введите свой пароль на вкладке «Права доступа к ролям», я установил все флажки, но опытный пользователь postgres, вероятно, настоятельно рекомендует проверять только «наследует права от родительских ролей» и «может создавать объекты базы данных», но я » Я не опытный пользователь и просто хочу отлаживать SQL-вызовы Rails в Postgres, поэтому я также проверил «Суперпользователь» и «Может создавать роли», на всякий случай.

.Step 5. Теперь вы сможете создавать новую базу данных, не входя в систему как пользователь postgres. Попробуйте набрать:

createdb mydb_as_user

Надеюсь, это сработает для вас.

.Step 6. Итак, у вас есть файл development.sqlite3 в каталоге rails 'db /'. Первоначально я собирался установить следующий тест как преобразование этого из sqlite3 в psql.
Я не мог заставить это работать, но я оставил свои попытки здесь, поскольку решение, которое я использовал, требовало наличия данных в приложении Rails на Heroku.com (см. Вместо этого решение, начиная с шага 7 и далее). Для тех, у кого есть только локальное приложение и нет данных в Heroku, они не могут использовать тот же подход, поэтому им может понадобиться изучить что-то вроде этого:

x6.1 Сначала проверьте 'psql', введя команду из командной строки, например:

psql mydb_as_user

это должно отобразить что-то вроде ниже (после того, как вы ввели свой пароль):

C:>psql mydb_as_user
Password:
psql (9.0.4)
WARNING: Console code page (850) differs from Windows code page (1252)
         8-bit characters might not work correctly. See psql reference
         page "Notes for Windows users" for details.
Type "help" for help.

mydb5=# 

x6.2 попробуйте ввести:

CREATE TABLE users_table (id integer, "name" text);

Должно отобразиться:

CREATE TABLE
mydb5=#

Если вы зарегистрируетесь в pgAdmin III, вы увидите там таблицу под:

Обозреватель объектов> Группы серверов> Серверы> PostgreSQL 9.0 (localhost: 5432)> Базы данных> mydb_as_user> Схемы> public> Таблицы> users_table>

x6.3 Хорошо, затем попробуем преобразование. Скачанный sqlite-shell скомпилированный двоичный файл для Windows.
x6.4 Создайте новый каталог, я использовал 'C: \ temp' и поместил в него файл sqlite3.exe и ваши файлы development.sqlite3.
x6.5 Используйте следующие команды (от здесь ), чтобы выгрузить базу данных development.sqlite3 в Postgres.

sqlite3 development .dump | psql development2

вы можете получить ошибку вроде:

psql: FATAL: database "development2" does not exist

x6.6, поэтому я вошел в pgAdmin III и создал базу данных для разработки 2, снова попробовал команду и получил:

ERROR:  syntax error at or near "PRAGMA"
LINE 1: PRAGMA foreign_keys=OFF;
        ^
BEGIN
COMMIT

Как я уже сказал, я не мог заставить его работать. Я уверен, что есть способ обойти эту ошибку, но я подумал о другом, и поэтому вместо этого я использовал это решение (для которого нужны учетные записи Heroku для ваших данных и выполняется преобразование из sqlite3 в psql с использованием гема Taps (I верить):

.Step 7. в pgAdmin III Я создал другую базу данных. На вкладке свойств я устанавливаю имя: «разработка», владелец: «AJames» (замените его своим собственным именем пользователя Windows). А на вкладке привилегий установите роль: public и отметьте опцию ALL (думал, что это сбрасывается на непроверенную, поэтому я не уверен, что это необходимо).

. Шаг 8. добавить gem 'pg', '0.11.0' в ваш файл драгоценного камня. Возможно, вы также захотите удалить: gem 'sqlite3' в этот момент тоже.

.Step 9. установить для database.yml значение , предложенное здесь в:

development:
  adapter: postgresql
  database: db/development
  username: AJames # replace this with your own user name
  password: secret # replace this with your own password
  host: localhost
  encoding: UTF8
  pool: 5
  timeout: 5000

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

.Step 10. из командной строки в корневом каталоге вашего приложения rails запустите: rake db:migrate Это создаст новую схему и все таблицы в базе данных Postgres.

.Step 11. запустите heroku db:pull из командной строки (снова из корневого каталога вашего rails-приложения), чтобы перенести все ваши данные в новую пустую базу данных Postgres. Я думаю, что в этот момент ваш жетон будет делать эту работу за вас.


.Step 12. Надеюсь, что нет шага 12! ... и теперь он должен работать на вас. Счастливая отладка RoR PostgreSQL! Пожалуйста, измените или дайте мне знать, если есть какие-либо ошибки в этом.

Кроме того, вот список дополнительных вещей, которые могут быть интересны / полезны:

2 голосов
/ 14 июля 2014

ответ от AJP правильный, с небольшой переконфигурацией.Линия

    database: db/development 

у меня не работает.Я должен изменить его на

    database: development

Я использую это для ruby ​​на рельсах для команды

    rake db:create 

и

    rake db:migrate

для работы

2 голосов
/ 17 августа 2011

Ни одна из ваших ссылок не оказалась (возможно) самой полезной документацией - официальными документами postgresql *1001*.Недавно я настроил Linux Mint box с postgresql и django, используя комбинацию этих документов и этих , хотя последние относятся к Linux.

Я бы больше беспокоился о проверке стороны postgresqlвещей, меньше о рельсах.То есть ваш вопрос должен звучать так: «Как я могу настроить и протестировать сервер postgresql на компьютере с Windows 7», более того, вам не нужно знать, как его заблокировать в рельсах.

Редактировать: Возможно эта также может быть вам полезна - официальная вики postgresql с подробными инструкциями по установке.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...