2013-09-02 2 views
2

Моя цель - настроить Postgres, который я могу использовать для разработки моего приложения rails, а затем нажать его на Heroku, не изменяя файл конфигурации базы данных. Кажется, достаточно просто, не так ли?Что такое Postgres на OS X?

Я видел много вещей в Интернете о том, что PostgreSQL 9.2.x не работает на OS X 10.8, и я все еще пытаюсь заставить его работать с Rails. Не понимая, что версия PSQL поставляется с OS X, я решил ее установить. (ПРИМЕЧАНИЕ. Я как бы отлаживаю круги, поэтому, возможно, все было не так, как я ожидал.)

Я попытался загрузить и установить с помощью the official graphical installer listed here, и я перезагрузил свой Mac. Я видел, что была создана дополнительная учетная запись пользователя, и я быстро ее удалил. (Я знаю, я знаю, вероятно, что вызвало некоторую душевную болью по линии, но, похоже, не было разумно иметь дополнительную учетную запись пользователя.)

При запуске приложения для рельсов он не смог подключиться к postgres , Я попытался запустить psql из Terminal.

psql: could not connect to server: No such file or directory 
    Is the server running locally and accepting 
    connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?` 

Затем я приступил к установке Postgres с доморощенным. Я установил homebrew, затем postgres. То же самое. Я немного поработал с Google и наткнулся на поток на форуме Postgres. Из того, что я получил от этого, было то, что что-то изменилось между OS X 10.7 и 10.8, но это не было причиной моей проблемы.

Далее я попытался использовать self-contained the Postgres.app. Теперь я смог создать пользователей и подключиться к базе данных. Rails смог подключиться к Postgres, но жаловался, что база данных, которую я определил в config.yaml, отсутствовала. Поэтому я создал его - или так я думал.

Запуск CREATE DATABASE my_db в «автономной» версии PSQL не сработал - даже если без автономного приложения PSQL будет иметь эту ошибку сокета. Затем я попытался создать нового пользователя с доступом для записи. Неа. CREATE молчал.

Я попытался добавить localhost к переменной окружения и, похоже, решил проблему с портом, но теперь у Rails снова возникли проблемы с поиском Postgres.

Я удалил версию для варки. Я удалил инструменты предприятия и др. Еще не повезло. Перезагружать. Еще не повезло.

Я просто удалил заваривать и мой конфиг выглядит следующим образом:

development: 
    adapter: postgresql 
    database: my_db 
    pool: 5 
    timeout: 5000 
    host: localhost 
    port: 5432 

Rails говорит база данных не существует.

Что мне нужно сделать, чтобы заставить Postgres работать с Rails 3.2.6 на Mac OS X 10.8.4 Mountain Lion?

+1

Я очень хочу, чтобы кто-то найти человек, Apple, ответственные за их PostgreSQL встроенного по умолчанию установить и орать на них, пока они не перестанут класть его на порт по умолчанию (5432) и перестают помещать свои копии libpq и psql на пути. Это вызывает так много хаоса для пользователей Mac. Тем не менее, вы создали множество своих проблем здесь, например, «я видел, что была создана дополнительная учетная запись пользователя, и я ее быстро удалил», а с «это не сработало, я попробую другую упаковку без удаление предыдущего "подхода. –

+1

Когда вы говорите: «Rails говорит, что база данных не существует», можете ли вы быть более конкретным? * Точная ошибка сообщение пожалуйста *. –

ответ

7

Есть много способов добраться до точки, которую вы хотите, но это должно работать:

Первый - избавиться от любых существующих копий PostgreSql следующим образом:

brew update 
brew uninstall postgresql 

(при условии, нет проб с обновлением пива)

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

Если у вас еще есть Postgres приложение, перетащите его из приложений и в корзину

Я бы тогда сделать перезагрузку, только для этого ада ... (мой старый опыт для Windows :-)

затем установите последнюю версию Postgres (или и может PROB указать версию здесь)

brew install postgres 

Если подбрасывает ошибку, связанную с чем-то вроде OSSD-UUID, то вобще

brew uninstall ossd-uuid && brew install ossd-uuid 

и что должны очистить его

доморощенного перечислены некоторые полезные команды, например, набор Postgres для запуска на запуск и т.д.

Создание начальной Postgres БД по

initdb /usr/local/var/postgres -E utf8 

начальной Postgres по

postgres -D /usr/local/var/postgres 

Теперь у вашего терминала введите

psql postgres 

с помощью Mac пароля администратора, и должен получить приглашение, таким образом, (\ Q, Выходы):

postgres=# 

Пользователь с вашим именем пользователя будет создан (но, из памяти, а не пароль для него), так что теперь установлено

postgres=# alter user your-name with password 'anything'; 

Он вернется с ALTER РОЛИ в случае успеха (& только быстрой, если нет)

Затем, если база данных Rails является, например, dev_db, и может создать пользователь для этого, таким образом:

postgres=# create role your_user with login createdb createrole password 'your_pass'; 

ваш_пользователя и your_pass появится в ваших рельсах database.yaml файла (не уверен, что если CREATEDB & createrole должны быть есть, но то, что я сделал)

Наконец, ваш database.yaml должен иметь развитие, как:

development: 
    adapter: postgresql 
    encoding: unicode 
    database: dev_db 
    pool: 5 
    timeout: 5000 
    host: localhost 
    username: your_user 
    password: your_pass 

Тогда

rake db:create 

И это должно создать пустую базу данных, что ваше Rails миграция будет заселить

Я надеюсь :-)

Смежные вопросы