在Windows上安装Postgres以与Ruby-on-Rails一起使用

目前我得到以下错误:

PGError(FATAL:用户“postgres”的密码authentication失败):

当我的应用程序试图访问数据库。

我想testing我的SQL调用对Postgres作为我的应用程序正常rest时推送到Heroku上的生产,因为对sqlite 3 Postgres(我认为这可能是一个健康的事情)更严格的要求所以我有一个类似的要求对于一个不是过时的教程安装postgres的使用ruby的轨道上的窗户(7)请。 我以为这将是一个快20分钟的下载和安装,但2和一个小时后,我不认为我是非常接近呢。 到目前为止我已经:

从这里下载并安装Postgres版本8.4.8-1

设置我的环境variables,使path(用户)是: C:\Ruby192\bin;C:\Program Files (x86)\PostgreSQL\8.4\bin

的Gemfile:

 gem 'pg', '0.11.0' # instead of gem 'sqlite3', '1.3.3' 

运行bundle install为我的Rails应用程序似乎成功,但还没有find简单的方法来validation安装呢。

按照这里的build议设置database.yml 为 :

 development: adapter: postgresql database: db/development username: postgres password: secret host: localhost encoding: UTF8 pool: 5 timeout: 5000 

我知道我需要为Postgres设置一个用户名和密码 , 也许也启动postgres服务器,连接到它(?),并把我的本地IP地址,我会连接到一个configuration文件的地方 ,然后编辑“C:\ Program Files(x86)\ PostgreSQL \ 8.4 \ data”等其他.conf文件之一…

我觉得Rails让我变得软弱,我是在想什么,还是设置起来真的很棘手,我应该回到Sqlite3,那里还有非常有用的SQLite Manager,Firefox插件?

我仍然在寻找一个初学者指南来安装和使用Postgres for rails,但到目前为止,我只是被大多数的东西所迷惑,试图像这样 , 这个 , 这个 , 这个 , 这个 (对于Snow Leopard), 这 (linux)。

任何指针将不胜感激。 谢谢!

詹姆士

Solutions Collecting From Web of "在Windows上安装Postgres以与Ruby-on-Rails一起使用"

一种在Windows 7上安装Postgres以用作Rails 3(3.0.7)项目的PostgreSQL数据库的方法。


序言 (你可以跳过这一点)

所以首先要指出的是,Postgres不仅仅是.sqlite3的一个不同的文件扩展名,它是一个管理数据库的完整机制。 因此,它有一个客户端/服务器模型,其中您需要设置为使用Postgres作为您的Rails应用程序的数据库。

Postgres设置与几乎毫不费力的sqlite设置相比,经历了相当大的痛苦:如果您正在部署到Heroku,他们目前正在使用Postgres,所以SQLite3上的一些SQL调用在使用Postgres时会中断。 在本地调试postgres比在Heroku的服务器上调试要容易得多。

所以我做了以下几件事:(免责声明:我可能已经忘记了包括我所做的一些事情……花了我48小时的痛苦,才使它起作用……如果以下的建议不能实现, (2300页!!),但非常全面的Postgres文档应该有所帮助,如果您认真使用Postgres,我建议下载它,因为它有很多材料,我刚刚开始)(第二个免责声明:我几乎可以肯定地打破了20个明智的Postgres准则,并暴露了Postgres数据库中的安全漏洞,如果有经验的Postgres用户不同意,请编辑我的文章。


。步骤1.从这里下载并安装PostgreSQL v9.0.4-1,因为这里说只有9.0.x将在Windows 7上受支持。我保留所有默认选项,并在Postgres安装程序提示时使用“secret”作为密码对于一个(再次不能完全确定在互联网上共享信息的后果是什么…很快就会发现我确定)。 您将在步骤3中使用此密码。

。步骤2.更改环境变量,使路径( 对于系统 ,而不是用户 (我不知道这是否重要))是: C:\Program Files\PostgreSQL\9.0\bin
(nb我在64位窗口,因此它不是安装在32位'C:\ Program Files文件(x86)\ PostgreS …')

不要忘记更改文件夹PostgreSQL \ 9.0的访问权限,并删除文件夹或内容的所有默认只读权限。 (您可能还需要重新启动计算机才能生效 – 谢谢@Gavin – 尽管不太可能)。

Step 3.通过尝试创建一个新的数据库来测试Postgres的安装:从命令行: createdb -U postgres mydb_as_postgres 现在应该提示您输入密码,如果不是的话,可能需要先启动服务器(我不记得是否需要这样做)。 最简单的方法是通过pgAdmin III,它应该是在像C:\Program Files\PostgreSQL\9.0\bin夹中的“pgAdmin3.exe”。 一旦你开始pgAdmin III,左侧应该有一个名为“对象浏览器”的面板。 在这应该有一棵树:

服务器组>服务器> PostgreSQL 9.0(localhost:5432)

右键单击“PostgreSQL 9.0(localhost:5432)”并选择“连接”。

createdb -U postgres mydb_as_postgres命令应创建一个名为“mydb_as_postgres”的新数据库,您可以通过启动pgAdmin III并双击“PostgreSQL 9.0(localhost:5432)”来检查该数据库。 在这之下应该是:

Databases (2)应该列出2个名为mydb_as_postgrespostgres数据库

我把它称为_as_postgres因为命令的-U postgres部分告诉Postgres用postgres用户创建数据库,因为它是所有者,当你没有以postgres用户登录时,你需要指定它。 我把所有的文件保存为“AJames”用户,虽然如此,如果你是相同的,并且想以不同的用户身份登录时继续开发应用程序,则需要为该用户创建一个Postgres角色(请参阅步骤4)。

步骤4.通过pgAdmin III。 右键单击Login Roles(对于我来说):

对象浏览器>服务器组>服务器> PostgreSQL 9.0(localhost:5432)>登录角色

右键单击登录角色,在角色名称中选择“新建登录角色…”,把你的操作系统用户名(对我来说是AJames),并在“角色权限”选项卡下填写你的密码,我全选但是经验丰富的postgres用户可能会强烈建议只检查“从父角色继承权限”和“可以创建数据库对象”但我不是一个有经验的用户,只是想在Postgres中调试Rails SQL调用我也检查了“超级用户”和“可以创建角色”,以防万一。

。步骤5.现在,您应该能够创建一个新的数据库,而无需以postgres用户身份登录。 尝试输入:

createdb mydb_as_user

希望这应该为你工作。

Step 6.好吧,你的rails'db /'目录下有一个development.sqlite3文件。 最初我将设置下一个测试,将其从sqlite3转换为psql。
我不能得到这个工作,但我离开我的尝试在这里,因为我使用的解决方案需要在Heroku.com上的Rails应用程序中的数据(请参阅步骤7以上的解决方案)。 对于那些只有本地应用程序且Heroku中没有数据的用户,他们不能使用相同的方法,因此他们可能需要探索如下内容:

x6.1首先,通过从命令行尝试命令来测试'psql',例如:

psql mydb_as_user

这应该显示如下所示(在您输入密码后):

 C:>psql mydb_as_user Password: psql (9.0.4) WARNING: Console code page (850) differs from Windows code page (1252) 8-bit characters might not work correctly. See psql reference page "Notes for Windows users" for details. Type "help" for help. mydb5=# 

x6.2试试输入:

CREATE TABLE users_table (id integer, "name" text);

它应该显示:

 CREATE TABLE mydb5=# 

如果你检查pgAdmin III,你应该看到下面的表格:

对象浏览器>服务器组>服务器> PostgreSQL 9.0(localhost:5432)>数据库> mydb_as_user>模式>公共>表> users_table>

x6.3好的,接下来尝试转换。 为windows 下载了sqlite-shell预编译的二进制文件。
x6.4创建一个新的目录,我用'C:\ temp',把sqlite3.exe和你的development.sqlite3文件放进去。
x6.5使用下面的命令(从这里 )将development.sqlite3数据库转储到Postgres中。

sqlite3 development .dump | psql development2

你可能会得到一个错误,如:

psql: FATAL: database "development2" does not exist

所以我进入了pgAdmin III,并开发了一个2数据库,再次尝试命令,得到:

 ERROR: syntax error at or near "PRAGMA" LINE 1: PRAGMA foreign_keys=OFF; ^ BEGIN COMMIT 

就像我说的那样,我无法做到这一点。 我敢肯定,有一种方法来纠正这个错误,但我想到了一种不同的方式,所以我使用了这个解决方案(这需要一个Heroku帐户来获取您的数据,并使用Taps gem(I)来从sqlite3到psql的转换相信):

步骤7.在pgAdmin III中,我创建了另一个数据库。 在属性选项卡下,我设置名称:'开发',所有者:'AJames'(用您自己的Windows用户名替换)。 然后在特权标签下,设置角色:'公共',并检查了所有选项(以为这重置为取消选中,所以我不知道这是必要的)。

。步骤8.gem 'pg', '0.11.0'到您的gem文件中。 您可能也想在这一点删除: gem 'sqlite3'

第9步。按照这里的建议设置database.yml为:

 development: adapter: postgresql database: db/development username: AJames # replace this with your own user name password: secret # replace this with your own password host: localhost encoding: UTF8 pool: 5 timeout: 5000 

如果您正在开发一个开源项目,并且不希望您的密码公开可用,请查看一些答案,以便在Rails应用程序中安全地提供数据库密码 。

从rails应用程序的根目录下的命令行运行: rake db:migrate这将在Postgres数据库中创建新的模式和所有的表。

。步骤11.运行heroku db:pull从你的命令行(再次从你的rails应用程序的根目录下拉)把所有的数据拉到你的新的空Postgres数据库中。 我认为在这一点上你的水龙头宝石将为你做这个工作。


第12步希望没有第12步! …现在它应该为你工作。 快乐的RoR PostgreSQL调试! 请编辑,或者让我知道,如果有任何错误。

另外,这里列出了一些可能有趣/有用的附加内容:

  • 这是一篇关于Postgres密码的博客文章 ,他们为什么需要他们,如何改变他们等等。
  • 在'Creating a spatial database'下创建一个空间数据库,对于理解pg_hba.conf的内容以及Reno给出的第二个链接是非常有用的,在'Using pgAdmin III GUI'下可以测试postgres是否真的在工作,在尝试适应Rails之前(即尝试创建一个数据库,并把表和一些数据)。
  • 在巨大而又非常全面的Postgres文档中 ,我将从第58页开始。 教程”。 然后在pdf页面431(!)里有'Chapter 17. server setup and operation',我也觉得有用。

没有一个链接看起来是(可以说是)最有用的文档 – 官方 postgresql文档。 我最近使用postgresql和django配置了一个Linux Mint框,使用这些文档和这些文档的组合,尽管后者是特定于Linux的。

我更担心的是验证事物的postgresql方面,而不是关于rails。 也就是说,你的问题应该是“如何在Windows 7上设置和测试postgresql服务器”,而不是你需要知道如何将它锁定在rails中。

编辑:也许这也可以用于你 – 官方postgresql维基与详细的安装指南。

祝你好运!

从AJP的答案是正确的只是一个小的重新配置。 该线

  database: db/development 

不适合我 我必须改变它

  database: development 

我在轨道上使用这个红宝石命令

  rake db:create 

  rake db:migrate 

上班