一种在Windows 7上安装Postgres以用作Rail 3(3.0.7)项目的PostgreSQL数据库的方法。
序言(你可以跳过此位)
所以要指出的第一件事是,Postgres的不只是从.sqlite3文件扩展名不同,它是一个整体的管理机制你的数据库。因此,它有一个客户端/服务器模型,其中您需要设置为使用Postgres作为您的Rails应用程序的数据库。
Postgres设置与几乎毫不费力的sqlite设置相比经历了相当大的痛苦:如果你部署到Heroku,他们目前使用Postgres,所以你使用Postgres时sqlite3上的一些SQL调用会中断。在本地调试postgres比在Heroku的服务器上调试要容易得多。
所以我做了以下事情: (免责声明:我可能忘记包括我所做的一些事情......我花了48个多小时的痛苦才开始工作...... if下面的建议对你不起作用,然后巨大的(2300页!!),但very thorough Postgres documentation应该有帮助。如果你认真使用Postgres,我建议下载这个,因为它有很多材料,我只有(第二个免责声明:我几乎可以肯定地打破了20个明智的Postgres准则并暴露了Postgres数据库中的安全漏洞,如果有经验的Postgres用户不同意任何明显的事情,请编辑我的)
。步骤1.下载,然后从here因为here说,只有9.0.x将在Windows 7支持我保持所有默认选项,只用于“秘密”作为密码安装PostgreSQL v9.0.4-1当Postgres的安装人员提示你时(我不确定在互联网上共享这些信息的后果是什么......很快就会发现我确信)。你会在步骤需要使用此密码3.
。步骤2.更改环境变量,使得路径(for system, not user(我不知道这是显著与否))为:C:\Program Files\PostgreSQL\9.0\bin
(注:我因此它不会被安装在'C:\ Program Files(x86)\ PostgreS ...'中的32位中)'
不要忘记将访问权限更改为文件夹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(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_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
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=#
5233。2尝试输入:
CREATE TABLE users_table (id integer, "name" text);
它应该显示:
CREATE TABLE
mydb5=#
如果你的pgAdmin III检查,你应该看到桌子上有下:
对象浏览器>服务器组>服务器> PostgreSQL 9.0(localhost:5432)>数据库> mydb_as_user> Schema> public> Tables> users_table>
x6.3好吧,紧跟t ry转换。 Downloaded sqlite-shell Windows预编译二进制文件。
x6.4创建一个新目录,我使用'C:\ temp'并将sqlite3.exe和您的development.sqlite3文件放入其中。
x6.5使用以下命令(这些命令来自here)将development.sqlite3数据库转储到Postgres中。
sqlite3 development .dump | psql development2
你可能会得到这样的错误:让我去到的pgAdmin III,并提出了发展2数据库,再次试图命令并得到
psql: FATAL: database "development2" does not exist
x6.6:
ERROR: syntax error at or near "PRAGMA"
LINE 1: PRAGMA foreign_keys=OFF;
^
BEGIN
COMMIT
就像我说的,我无法得到它的工作。我确信有一种方法可以避免这种错误,但我想到了一种不同的方式,所以我使用了这种解决方案(它需要一个Heroku帐户来获取您的数据,并使用Taps gem(I)执行从sqlite3到psql的转换。相信):
步骤7.在pgAdmin III中我创建了另一个数据库,在属性选项卡下我设置了name:'development',owner:'AJames'(用你自己的Windows用户名替换它)。权限选项卡下,设置角色:“公共”和检查(认为这重置为未选中状态,所以我不知道这是必要的)ALL选项
。步骤8添加 。 10 到你的宝石文件。在这一点上,你可能也想删除: gem 'sqlite3'
。
。步骤9.集的database.yml为suggested here到:
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
如果您正在使用一个开源的项目,并不希望被公之于众您的密码,看看在某些Securely providing the database password in a Rails app的答案。
。步骤10.在命令行中你的Rails应用程序的根目录下运行: rake db:migrate
这将创建一个新的架构和Postgres数据库中的所有表。
。步骤11。从您的命令行运行heroku db:pull
(再次从您的rails应用程序的根目录中)将您的所有数据拉下并放入新的空Postgres数据库。我认为在这一点上你的水龙头宝石将为你做这项工作。
。步骤12.希望没有步骤12! ...现在它应该为你工作。快乐的RoR PostgreSQL调试!请编辑或让我知道,如果有任何错误。
而且,这里有更多的东西的清单,可能是有趣/有用:
我只是从HTTPS安装PostgreSQL的://postgrespro.com/windows,所有其他设置 - 常用的方法。 – prograils