ROR изменить базу данных приложения с SQLite на PostgreSQL - PullRequest
5 голосов
/ 07 августа 2011

У меня есть веб-приложение, которое использует SQLite. Я развернул его на героку, который использует PostgreSLQ. Это иногда вызывает проблемы, и мне посоветовали разработать приложение с использованием PostgreSQL вместо SQLite.

Я обнаружил, что должен изменить database.yml так (то же самое для тестирования и производства):

development:
  adapter: postgresql
  database: my_database
  username: my_username
  password: my_passwod
  host: /var/run/postgresql or localhost

Ну, единственная база данных, которую я когда-либо использовал, это SQLite, поэтому я просто попытался рискнуть, но потерпел неудачу. Я заполнил этот файл некоторыми случайными данными.

rake db:migrate привело к:

Когда я использовал host: localhost

> could not connect to server: Connection refused   Is the server running
> on host "localhost" and accepting TCP/IP connections on port 5432?

Когда host: /var/run/postgresql

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

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

1 Ответ

2 голосов
/ 24 июля 2012

Я хотел бы сообщить вам, что вы должны загрузить Postgresql, включая сам PGADMIN, который проще в использовании, чем терминал psql.

И я думаю, что когда вы скачиваете / устанавливаете Postgresql с их официального сайта ... пакет уже завершен.

После установки postgresql попросит вас указать пароль, который вы будете использовать при доступе к серверу postgresql.

После установки откройте PGADMIN и подключитесь.на сервер.Введите свой пароль (который вы заявили при установке).

Если вы не можете подключиться к серверу, отредактируйте порт.Чтобы сделать это, щелкните правой кнопкой мыши по серверу, затем перейдите в свойства ... измените порт на что-то, что бесплатно.Пример: 5433 и так далее.Это зависит от вас.

Если все наконец заработало ... установите правильную конфигурацию для вашей базы данных .yml

Это важно:

development:
  adapter: postgresql
  database: name_of_database_here
  host: localhost
  username: postgres
  password: your_db_server_password_here
  pool: 5
  timeout: 5000
  port: 5433

Хорошо, из этой конфигурацииинформация выше, укажите важные части.По умолчанию ваше имя пользователя сервера БД - postgres, и, очевидно, ваш хост - localhost, потому что вы настраиваете в разработке.

Если ваш порт 5432 по умолчанию, просто удалите часть порта.

Давайте перейдем к вашему гемфайлу.

Чтобы вы могли развернуть свое приложение в Heroku.Используйте gem 'pg' вместо sqlite3.

Если у вас есть база данных sqlite3, поместите гем в группу разработки.В этом случае Heroku будет успешно объединяться во время мастер-процесса git push heroku.

group :development do
       gem 'sqlite3'
end

Ваш gem 'pg' может либо выйти за пределы групп, либо поместить его в вашу производственную группу.

Важно:

Перед любой процедурой развертывания убедитесь, что вы можете запустить приложение локально (localhost).Тогда, если все работает ... это время, когда вы должны правильно организовать необходимые вещи.

Если вы хотите переключиться на Postgresql вместо sqlite3 после загрузки приложения в Heroku ... вы можете сделать это с помощью pgbackupsadd-on и pg_restore файла дампа на ваш локальный db-сервер postgresql.

Вот и все.Надеюсь, это поможет.

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