由于单位需要开发一个系统,需要使用DB2 (8.2通用企业版)数据库存储上千万条数据,为了试验ruby on rails的压力,开发环境就用ruby on rails 2.3.4,rails、DB2都安装在同一台windows xp上。一开始就在连接数据库上遇到了麻烦,搭建好rails环境,安装驱动:gem install ibm_db,晕,说要ruby 1.8.7,卸载1.8.6重装1.8.7,又gem install ibm_db,晕,又提示一错误,但是gem list查看已经安装上了,测试未通过,以为是安装问题,上http://rubyforge.org/frs/?group_id=2361直接下载ibm_db-2.5.5-mswin32.gem包安装,但是还是未成功。上IBM官网http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0705chun/index.html?S_TACT=105AGX52&S_CMP=tut-cto查看,原来“最新版本的 IBM_DB 适配器和驱动程序要求使用 DB2 9,FixPack 2 或 DB2 8,FixPack 15”,哈哈原来需要补丁包FixPack 15,上http://www-01.ibm.com/support/docview.wss?rs=71&uid=swg21256059下载“DB2 Enterprise Server Edition ”地址:ftp://public.dhe.ibm.com/ps/products/db2/fixes2/english-us/db2winIA32v8/fixpak/FP18_WR21443/FP18_WR21443_ESE.exe,注意与自己的DB2版本匹配。一阵等待、忙乎终于安装完毕,进入开始->ibm db2->一般管理工具->控制中心->高级->所选->创建数据库->标准,一阵下一步到了最后一步"制定此数据库的语言环境",国家/地区:中华人民共和国(默认也行),地域:cn,代码集:utf-8,OK!测试,能连上数据库了,填上表单提交,英文数字没问题,中文不能保存,但是中文后面跟上空格或英文就没问题了,这怎么行,又是一阵狂搜,几多希望几多失望。最后在一篇“使用参数化查询改进 DB2 Ruby on Rails 应用程序的安全性和性能”http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-1001db2rubyonrailsapps/index.html发现在database.yml中增加一个参数 parameterized: true试做,没想到成功了,但是原理不是很懂,最后的database.yml配置如下
development:
adapter: ibm_db
username: Administrator
password: mypassword
database: test_db
parameterized: true
现在可以存取汉字了,但是控制中心看到的字段汉字数据是乱码,这肯定是编码页的问题,DB2命令行窗口:db2 get db cfg for test查看数据库参数
数据库配置发行版级别 = 0x0a00
数据库发行版级别 = 0x0a00
数据库地域 = CN
数据库代码页 = 1208
数据库代码集 = UTF-8
数据库国家/地区代码 = 86
数据库整理顺序 = BINARY
备用整理顺序 (ALT_COLLATE) =
数据库页大小 = 4096
没错呀,又鼓捣一阵子:
db2 connect to test
db2set db2codepage=1208
db2 terminate
db2 connect to test
关闭rails
重启ruby script/server
进入页面表单填上汉字提交成功,在控制中心查看呵呵,汉字再也不乱码了!
有些原理没搞懂,记录一下应付逐渐衰退的记忆!