Подтвердить что ты не робот

Установка Postgres в Windows для использования с Ruby-on-Rails

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

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

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

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

Загружено и установлено Postgres Version 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'

ran 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, this, this, this (для Snow Leopard), this (linux).

Любые указатели будут высоко оценены. Благодарю!

Джеймс

4b9b3361

Ответ 1

Подход к установке 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, отредактируйте мой пост.)


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

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

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

. Шаг 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)" и выберите "Подключиться".

Команда 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, поэтому я также проверил "Суперпользователь" и "Может создавать роли", на всякий случай.

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

createdb mydb_as_user

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

Шаг 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 верить):

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

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

. Шаг 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.

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

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


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

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

Ответ 2

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

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

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

Удачи!

Ответ 3

ответ от AJP является правильным с небольшим re-config. Строка

    database: db/development 

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

    database: development

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

    rake db:create 

и

    rake db:migrate

для работы