2017-07-16 50 views
-1

我最近在Windows下载并安装PostgreSQL。现在如何在Ruby on Rails中使用PostgreSQL?我在网上搜索这个,但找不到任何一步一步的简单解决方案。我不明白是什么。如何在Windows for Ruby on Rails中使用PostgreSQL?

+0

检查http://guides.rubyonrails.org/configuring.html#configuring-a-database – joanolo

回答

2

。步骤1.从这里下载并安装PostgreSQL v9.0.4-1,因为这里表示只有9.0.x将在Windows 7上受支持。我保留所有默认选项并仅使用'secret'作为密码当Postgres的安装人员提示你时(我不确定在互联网上共享这些信息的后果是什么......很快就会发现我确信)。您需要在步骤3中输入密码。

。步骤2.更改环境变量,例如Path(对于系统,而不是用户(我不确定这是否显着))是:C: \ Program Files \ PostgreSQL \ 9.0 \ bin (nb我在64位窗口中,因此它没有安装在32位的'C:\ Program Files(x86)\ PostgreS ...')

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

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

服务器组>服务器>的PostgreSQL 9.0(本地主机:5432)

右键单击 'PostgreSQL的9.0(本地主机:5432)',并选择 '连接'。

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

数据库(2)应列出2个数据库称为mydb_as_postgres和Postgres

我把它叫做_as_postgres,因为该命令的-U Postgres的部分告诉Postgres的创建与用户的Postgres数据库因为它是所有者,当您未以postgres用户身份登录时需要指定它。我将所有的文件都存储为'AJames'用户,但如果您是相同的,并且希望继续开发您的应用程序,并以不同的用户身份登录时,您需要为该用户创建一个Postgres'角色'(请参阅步骤4)。

。步骤4通过pgAdmin III。右键单击登录角色(这对我来说是):

对象浏览器>服务器组>服务器>的PostgreSQL 9.0(本地主机:5432)>登录角色

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

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

CREATEDB mydb_as_user

这应该可以为你工作。

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

x6.1首先,通过尝试命令测试'psql'从喜欢你的命令行:

PSQL mydb_as_user

这应该像下面显示的东西(你在您输入密码后):

C:> PSQL mydb_as_user 密码: PSQL(9.0。 4) 警告:控制台代码页(850)与Windows cod不同e页(1252) 8位字符可能无法正常工作。有关详细信息,请参见psql参考 页面“Windows用户注意事项”。 输入“help”寻求帮助。

mydb5 =#

X6.2尝试输入:

CREATE TABLE users_table(ID整数, “名称” 文本);

它应该显示:

CREATE TABLE mydb5 =#

如果你的pgAdmin III检查,你应该看到桌子上有下:

对象浏览器>服务器组>服务器>的PostgreSQL 9.0(localhost:5432)>数据库> mydb_as_user> Schema> public> Tables> users_table>

x6.3好的,接下来尝试转换。为Windows下载了sqlite-shell预编译的二进制文件。 x6.4创建一个新目录,我使用'C:\ temp'并将sqlite3.exe和您的development.sqlite3文件放入其中。 x6.5使用以下命令(来自此处)将development.sqlite3数据库转储到Postgres中。

sqlite3开发。转储| PSQL development2

你可能会得到这样的错误:

PSQL:FATAL:数据库 “development2” 不存在

x6.6所以我走进的pgAdmin III,并提出了发展2数据库,尝试了命令再次得到:

错误:在“PRAGMA”处或附近的语法错误 LINE 1:PRAGMA foreign_keys = OFF; ^ BEGIN COMMIT

就像我说的,我无法让它工作。我确信有一种方法可以避免这种错误,但我想到了一种不同的方式,所以我使用了这种解决方案(它需要一个Heroku帐户来获取您的数据,并使用Taps gem(I)执行从sqlite3到psql的转换。相信):

。步骤7.中的pgAdmin III我创造了另一个数据库下的属性选项卡中设置我的名字:“发展”,店主:“AJames”(用自己的Windows用户名替换此)和在权限标签下,设置角色:'public'并选中ALL选项(认为这会重置为未选中状态,因此我不确定这是否必要)。 .0'到你的gem文件,你可能也会想要在这一点上删除:gem'sqlite3'。这里建议

。步骤9.集的database.yml:

发展: 适配器:在PostgreSQL数据库 :DB /开发 用户名:AJames#用自己的用户名密码 替换此:秘密#用自己的密码 主机替换此:本地主机 编码:UTF8 池:5 超时:5000

如果您正在使用的一个开源项目,不想让你的密码公开,请看看在Rails应用程序中安全地提供数据库密码的一些答案。

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

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

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

好运