2007-08-31

Windows下安装Rails的PostgreSQL驱动

更新:2007- 09-01
內容:
Ruby下有两种PostgreSQL驱动:

第一种,原生Ruby驱动,纯Ruby编写
Windows下安装:
>gem install postgres-pr
或者直接从http://rubyforge.org/frs/download.php/3858/postgres-pr-0.4.0.gem下载,目前最新版本为0.4.0。下载完成之后执行
>gem install postgres-pr-0.4.0.gem

第二种,基于libpq C库实现,性能更好一些。
Windows下安装:
http://rubyforge.org/frs/download.php/9554/ruby-postgres-0.7.1.2006.04.06-mswin32.gem下载,目前最新版本为0.7.1。下载完成之后执行
>gem install ruby-postgres-0.7.1.2006.04.06-mswin32.gem
安装完成后,将PostgreSQL安装目录下的bin目录路径添加到Windows环境变量path中。或者将bin目录下的所有dll文件拷贝到Ruby安装目录的bin目录下。

配置:

修改 config/database.yaml文件
删除所有内容并添加以下内容


development:
adapter: postgresql
host: 127.0.0.1
port: 5432
username: test
password: test
database: test
encoding: UTF-8
test:
adapter: postgresql
host: 127.0.0.1
port: 5432
username: test
password: test
database: test
encoding: UTF-8
production:
adapter: postgresql
host: 127.0.0.1
port: 5432
username: test
password: test
database: test
encoding: UTF-8



其他可选参数为:


allow_concurrency: false
schema_search_path: myapp,sharedapp,public
schema_order: myapp,sharedapp,public
min_messages: NOTICE


这些参数中
adapter参数必须指定为 postgresql (如果使用PostgreSQL数据库的话)
host为数据库服务器所在主机,默认为localhost
port为数据库服务器所监听的端口号,默认为 5432,
username为登录用户名,默认为空
password为登录密码,默认为空
database为连接的数据库名称,也必须指定。

encoding为客户端编码,默认为该数据库的默认客户端编码,,一般情况下建议和页面编码一致,推荐使用UTF-8,驱动通过执行SET client_encoding TO 语句来设置。

allow_concurrency默认为false,表示是否允许并发访问,从驱动的代码来看,postgres-pr并未实现并发访问,所以,当使用postgres-pr驱动时,只能设置为false或者不设置该参数。而基于libpq C库实现的ruby-postgres支持该参数,可已设置为true,不过,建议不设置该参数。

schema_search_path和schema_order等效,为schema搜索顺序。
从activerecord中的代码来看:
pga.schema_search_path = config[:schema_search_path] ll config[:schema_order]
会优先使用schema_search_path配置,如果schema_search_path没有设置,则使用schema_order参数,如果二者都没有设定,则使用当前数据库默认schema_search_path

min_messages 为客户端信息的详细程度,可设定为 DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, LOG, NOTICE, WARNING, ERROR, FATAL, 和PANIC。越靠后的数值细节越少,默认值为NOTICE。 驱动通过执行 SET client_min_messages TO 语句来设置。

测试一下,假定Rails程序为MyApp
C:\workspace\MyApp>ruby script/console
>> Loading development environment.
>> ActiveRecord::Base.find_by_sql "SELECT * FROM tests "
>> …

更多设置,请参考http://wiki.rubyonrails.com/rails/pages/PostgreSQL
客户端信息的详细程度 ,请参考http://www.pgsqldb.org/pgsqldoc-8.1c/runtime-config-logging.html

沒有留言:

PostgreSQL & Google-Analytics Running...

::Planet PostgreSQL::

PostgreSQL Information Page

PostgreSQL日記(日本 石井達夫先生Blog)

PostgreSQL News

黑喵的家 - 資料庫相關

Google 網上論壇
PostgreSQL 8 DBA 專業指南中文版
書籍內容討論與更多下載區(造訪此群組)
目錄下載: PostgreSQL_8 _DBA_Index_zh_TW.pdf (更新:2007-05-18)

全球訪客分佈圖(Google)

全球訪客分佈圖(Google)