我有一个使用SQLite的Web应用程序。我将它部署在使用PostgreSLQ的heroku上。这有时会导致问题,我建议使用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应用程序。
答案 0 :(得分:2)
我想告诉你,你应该下载包含PGADMIN本身的Postgresql,它比psql终端更容易使用。
我认为当你从官方网站下载/安装Postgresql时......包已经完成了。
安装后,postgresql会询问您在访问postgresql服务器时将使用的密码。
安装完成后,打开PGADMIN并连接到服务器。输入您的密码(您在安装期间声明的密码)。
如果无法连接到服务器,请编辑端口。要执行此操作,请右键单击服务器,然后转到属性...将端口编辑为免费的东西。示例:5433等。这取决于你。
如果一切都在运行......为database.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数据库,那么将gem放在开发组中。在这种情况下,Heroku将在git push heroku master过程中成功捆绑。
group :development do
gem 'sqlite3'
end
您的gem 'pg'
可以不在群组之外,也可以将其放入制作小组。
重要的:
在任何部署过程之前,请确保您可以在本地运行应用程序(localhost)。然后,如果一切正常......那就是你应该适当组织必要的东西的时间。
如果您希望在将应用程序推送到Heroku之后切换到Postgresql而不是sqlite3 ...您可以通过pgbackups附加组件将pg_restore转储到本地postgresql数据库服务器。
就是这样。希望它有所帮助。
答案 1 :(得分:0)
请参阅本指南https://www.digitalocean.com/community/tutorials/how-to-set-up-ruby-on-rails-with-postgres,以便您可以通过更改database.yml和Gemfile来手动重新创建该过程。
如果您需要迁移数据库信息,请运行
pgloader ./production.sqlite3 postgres://username:password@localhost/database
选中https://migara.li/2017/07/24/migrating-from-sqlite-to-postgres/
水龙头等其他替代品目前无法正常工作 http://railscasts.com/episodes/342-migrating-to-postgresql