Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ROR将应用程序数据库从SQLite更改为PostgreSQL_Ruby On Rails_Postgresql - Fatal编程技术网

Ruby on rails ROR将应用程序数据库从SQLite更改为PostgreSQL

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:

我有一个使用SQLite的web应用程序。我将它部署在使用PostgreSLQ的heroku上。这有时会导致问题,有人建议我使用PostgreSQL而不是SQLite开发我的应用程序

我发现我应该这样修改
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