Ruby on rails ROR将应用程序数据库从SQLite更改为PostgreSQL
我有一个使用SQLite的web应用程序。我将它部署在使用PostgreSLQ的heroku上。这有时会导致问题,有人建议我使用PostgreSQL而不是SQLite开发我的应用程序 我发现我应该这样修改Ruby on rails ROR将应用程序数据库从SQLite更改为PostgreSQL,ruby-on-rails,postgresql,Ruby On Rails,Postgresql,我有一个使用SQLite的web应用程序。我将它部署在使用PostgreSLQ的heroku上。这有时会导致问题,有人建议我使用PostgreSQL而不是SQLite开发我的应用程序 我发现我应该这样修改database.yml(测试和生产也是如此): 我使用过的唯一一个数据库是SQLite,所以我试着抓住机会,但失败了。我用一些随机数据填充了这个文件 rake db:migrate导致: 当我使用host:localhost > could not connect to server:
database.yml
(测试和生产也是如此):
我使用过的唯一一个数据库是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 server,但我不知道怎么做。请逐步回答如何从SQLite应用程序转移到工作的PostgreSQL应用程序。我想建议您下载PostgreSQL,包括PGADMIN本身,它比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
好的,根据上面的配置信息,指定重要的部分。默认情况下,您的db服务器用户名是postgres,显然您的主机是localhost,因为您正在开发中进行设置
如果您的端口默认为5432,则只需卸下端口部分
让我们看看你的档案
以便您在heroku中部署应用程序。使用gem'pg'而不是sqlite3
如果您有一个现有的sqlite3数据库,那么将gem放在开发组中。在这种情况下,Heroku将在git push Heroku主进程中成功绑定
group :development do
gem 'sqlite3'
end
您的gem'pg'
可以跳出团队,也可以将其放入生产团队
重要:
在执行任何部署过程之前,请确保可以在本地(localhost)运行应用程序。如果一切正常。。。在这个时候,你应该适当地组织必要的东西
如果您希望在将应用程序推送到Heroku后切换到Postgresql而不是sqlite3。。。您可以通过pgbackups插件和pg_将转储文件恢复到本地postgresql db服务器中来实现这一点
就这样。希望能有所帮助。请阅读本指南,这样您就可以通过更改database.yml和Gemfile手动重新创建流程
如果需要迁移数据库信息,请运行
pgloader ./production.sqlite3 postgres://username:password@localhost/database
检查
其他选择,如水龙头,目前不起作用
这里有一个关于Ruby on Rails和Postgres的教程:。这里有一个更深入的步骤,只针对博士后:。可能重复的
pgloader ./production.sqlite3 postgres://username:password@localhost/database