Rails提供了很好的My SQL支持,不须做任何配置,即可连接。但是,对于SQLServer的连接就比较烦琐。
下面将介绍一种采用Ruby-DBI 提供的一个ADO Driver来连接。
安装one -click installer 来安装ruby 的话就已经安装了所有连接SQL Server使用的需求包.但是,并没有安装ADO Driver.
这样来安装它:
1. 在Ruby目录下找到这个目录: \ruby\lib\ruby\site_ruby\1.8\DBD
例如:我的Ruby安装在D:\ruby中,所以是这个目录D:\ruby\lib\ruby\site_ruby\1.8\DBD
在该目录中创建一个ADO文件夹
2. 下载
Ruby-DBI
3. 将lib/dbd_ado/ADO.rb文件拷贝到X:/ruby/lib/ruby/site_ruby/1.8/DBD/ADO/ADO.rb
patch x:\Ruby\lib\ruby\gems\1.8\gems\activerecord-1.10.1\lib\active_record\connection_adapters\sqlserver_adapter.rb 文件
SELECT COLUMN_NAME as... 改成
SELECT LOWER(COLUMN_NAME) as...
record[col] = row[col]改成record[col.downcase] = row[col]
在《Agile Web Development with Rails 》中 上边红色的部分是没有。
配置database.yml:
development:
adapter: sqlserver
database: database_name
host: server_name
username: user_name
password: your_pw_here
这样就可以连接上了.
通过以上修改的确可以连上并使用sql server数据库了,但如果使用“rake db:migrate”时你可能会碰到如下问题:
-- create_table("xxx_groups", {:force=>true})
rake aborted!
DBI::DatabaseError: Execute
OLE error code:80040E14 in Microsoft OLE DB Provider for SQL Server
第 3 个列或参数: 不能对数据类型 int 指定列宽度。
HRESULT error code:0x80020009
发生意外。: CREATE TABLE xxx_groups ([id] int NOT NULL IDENTITY(1, 1)
PRIMARY KEY, [built_in] bit DEFAULT 0 NOT NULL, [parent_id] int(11), [private_u
ser_id] int(11), [private_component_id] int(11), [name] varchar(192) DEFAULT ''
NOT NULL, [description] text DEFAULT '' NOT NULL, [created_on] datetime NOT NULL
, [updated_on] datetime NOT NULL)
从上面生成的sql可以看出问题的所在,int也定义了限制,在sql server中int的长度是固定的。
下面要继续修改sqlserver_adapter.rb文件
找到column_type_sql << "(#{limit})" if limit (rails 1.1.6版本在第477行)
改为
column_type_sql << "(#{limit})" if limit && native[:name]!="int"
原因sqlserver_adapter.rb自己在前面都说过了
# SQL Server only supports limits on *char and float types
这样 rake db:migrate也工作了。
BTW,
其实rails不是只在windows下才可以和sql server通信,在linux下和mac osx下也可以的,相关资源如下:
HowtoConnectToMicrosoftSQLServer
HowtoConnectToMicrosoftSQLServerFromRailsOnLinux
HowtoConnectToMicrosoftSQLServerFromRailsOnOSX
分享到:
相关推荐
NULL 博文链接:https://xieye.iteye.com/blog/481576
SQL Server - Rails ActiveRecord的SQL Server适配器
rails连接oracle需要的驱动 执行命令:C:\> ruby 文件名.rb <br>
Rails SQL查询跟踪器sql_tracker通过订阅Rails的sql.active_record事件通知来跟踪SQL查询。 然后,它汇总并生成报告,以使您对Ra Rails SQL查询跟踪器中发生的所有SQL查询有更深入的了解,sql_tracker通过订阅Rails...
这个是本人做的一个网上书城struts+jsp+SqlServer项目,有需要可以看看
迁移中的所有简化的Rails类型都将与匹配SQL Server国家(unicode)数据类型相对应。 始终检查initialize_native_database_types 以获取更新的列表。 以下类型( date , datetime2 , datetimeoffset ,
– c:/ruby/lib/ruby/gems/1.8/gems/mysql-2.7.3-x86-mswin32/ext/mysql.so 实际上是找不到连接所需的dll文件:libmySQL.dll 在mysql安装目录下的bin目录下将此文件复制到ruby的bin目录下即可解决此问题. ...
目标 Rails 4.1.x 和 activerecord-sqlserver-adapter 4.1.0。 用法 添加到 Gemfile: gem 'tiny_tds' gem 'activerecord-sqlserver-adapter-mirroring' 将镜像部分添加到 database.yml: development: ...
今天想用ruby on rails做一个小项目,需要用到mysql数据库,项目中的数据已经有了,只不过是保存在Sql Server中,用rails倒是可以操作Sql Server,但是总感觉不怎么搭配,想转换后使用,网上翻了下,转换的办法有很多,通过...
Rails SQL查询跟踪器 sql_tracker通过订阅Rails的sql.active_record事件通知来跟踪SQL查询。 然后,它汇总并生成报告,以为您提供有关Rails应用程序中发生的所有SQL查询的见解。安装将此行添加到您的应用程序的...
Ubuntu 11.04安装Ruby on rails 连接MySQL数据库.pdf
sql_tracker跟踪SQL查询通过订阅Rails的sql.active_record事件通知
检查Rails数据库快速方法,查看表的内容,将它们导出为CSV,EXPLAIN SQL并运行SQL查询。 演示可在以下获得: : 视频演示: ://youtu.be/TYsRxXRFp1g,https: 要求 版本>2.0 100%适用于Ruby 2.3 +,Rails 5和...
rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails ...
用 gem替换标准ActiveRecord#to_sql方法, 在控制台中输出漂亮SQL代码。 Rails日志也将被格式化。 输出示例: 或在控制台中 要求 Ruby2.4+ 滑轨 Rails 4.2+(可选),将自动注入 遗产 您可以将此版本的~> 0.2与...
RUBY RAILS INSTALLRUBY RAILS INSTALLRUBY RAILS INSTALL The Best Ruby Rails Server!
[Pragmatic Bookshelf] Crafting Rails Applications Expert Practices for Everyday Rails Development (E-Book) ☆ 图书概要:☆ Rails 3 is a huge step forward. You can now easily extend the framework, ...
《Ruby on Rails Tutorial》中文版(原书第2版,涵盖 Rails 4) Ruby 是一门很美的计算机语言,其设计原则就是“让编程人员快乐”。David Heinemeier Hansson 就是看重了这一点,才在开发 Rails 框架时选择了 Ruby...