`

Rails 连接 Sql Server的问题(ZT及补充)

阅读更多

来自Jouy国际blog,其中与书籍不同处做单独列出。大家自行尝试。
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

分享到:
评论

相关推荐

    rails配置sqlserver2000

    在Ruby on Rails框架中,与SQLServer 2000集成可能会比与其他常见的数据库系统(如MySQL或PostgreSQL)稍复杂一些,因为SQLServer 2000的兼容性问题和缺少官方支持。然而,通过一些第三方库和适当的配置,我们仍然...

    Ruby-SQLServerRailsActiveRecord的SQLServer适配器

    在Ruby on Rails框架中,开发者经常需要连接不同的数据库系统,如MySQL、PostgreSQL或SQL Server。本主题将深入探讨如何在Rails应用中使用SQL Server作为数据存储,特别关注`activerecord-sqlserver-adapter`这个gem...

    网上书城struts+jsp+SqlServer源代码

    Struts、JSP和SQL Server是构建Web应用程序的常用技术栈,它们在“网上书城”项目中的结合展示了如何利用这些技术实现一个完整的电子商务平台。本文将深入探讨这些技术及其在实际项目中的应用。 首先,Struts是一个...

    rails连接oracle需要的驱动

    rails连接oracle需要的驱动 执行命令:C:\&gt; ruby 文件名.rb &lt;br&gt;

    Rails SQL查询跟踪器-Ruby开发

    Rails SQL查询跟踪器sql_tracker通过订阅Rails的sql.active_record事件通知来跟踪SQL查询。 然后,它汇总并生成报告,以使您对Ra Rails SQL查询跟踪器中发生的所有SQL查询有更深入的了解,sql_tracker通过订阅Rails...

    activerecord-sqlserver-adapter:用于RailsSQL Server适配器

    对于SQL Server 2012及更高版本。 -TravisCI -传送带-宝石版-社区关于适配器使用SQL Server 2012或更高版本的ActiveRecord v6.0SQL Server适配器。 对旧版本感兴趣吗? 我们遵循跟踪Rails的合理版本控制策略。 这...

    rails和mysql数据库连接中出现的问题以及解决办法

    首先,Rails与MySQL的连接问题可能源于配置不正确。在`config/database.yml`文件中,你需要提供正确的数据库连接信息,包括主机名、用户名、密码和数据库名。如果这些信息填写错误或者遗漏,Rails将无法建立到MySQL...

    rails 连接mysql的问题解决

    – c:/ruby/lib/ruby/gems/1.8/gems/mysql-2.7.3-x86-mswin32/ext/mysql.so 实际上是找不到连接所需的dll文件:libmySQL.dll 在mysql安装目录下的bin目录下将此文件复制到ruby的bin目录下即可解决此问题. ...

    activerecord-sqlserver-adapter-mirroring:Rails 的数据库镜像支持 activerecord-sqlserver-adapter

    目标 Rails 4.1.x 和 activerecord-sqlserver-adapter 4.1.0。 用法 添加到 Gemfile: gem 'tiny_tds' gem 'activerecord-sqlserver-adapter-mirroring' 将镜像部分添加到 database.yml: development: ...

    Rails的中文乱码问题

    标题中的“Rails的中文乱码问题”涉及到的是在使用Ruby on Rails框架开发Web应用时,遇到的中文字符编码不正确的问题。Rails是一个基于Ruby语言的开源Web开发框架,它遵循MVC(Model-View-Controller)架构模式。在...

    rails web server deploy guide

    标题 "rails web server deploy guide" 暗示了本文将关注如何部署Rails应用程序到Web服务器。Rails是Ruby on Rails的简称,是一个流行的开源Web开发框架,用于构建动态、数据驱动的网站。部署Rails应用通常涉及将...

    sql_tracker:Rails SQL查询跟踪器

    Rails SQL查询跟踪器 sql_tracker通过订阅Rails的sql.active_record事件通知来跟踪SQL查询。 然后,它汇总并生成报告,以为您提供有关Rails应用程序中发生的所有SQL查询的见解。安装将此行添加到您的应用程序的...

    Ruby中访问SQL Server数据库的配置实例

    首先,FreeTDS是一个开放源代码的库,它允许Unix和Linux系统连接到SQL Server或Sybase数据库。为了安装FreeTDS,你需要执行以下步骤: 1. 下载FreeTDS的源代码包。 2. 解压缩下载的文件。 3. 进入解压后的目录,并...

    使用PetaPoco ORM管理SQLServer,SQLIte,MySQL和ProgreSQL数据库

    关于数据库连接,PetaPoco支持多种数据库驱动,只需引入对应的数据库提供者,如用于SQL Server的System.Data.SqlClient,SQLite的System.Data.SQLite,MySQL的MySql.Data,以及PostgreSQL的Npgsql。这使得开发者能够...

    Ruby on rails 数据库详细配置

    在Ruby on Rails框架中,数据库配置是至关重要的部分,它允许开发者与各种数据库系统进行交互,如MySQL、Microsoft SQL Server等。以下将详细介绍如何在Windows环境下安装Ruby on Rails以及配置数据库。 首先,我们...

    Ubuntu 11.04安装Ruby on rails 连接MySQL数据库.pdf

    ### Ubuntu 11.04下Ruby on Rails与MySQL数据库集成指南 #### 一、安装与配置MySQL数据库 在Ubuntu 11.04环境中,安装...这不仅为后续的开发工作提供了便利,也加深了对Ruby on Rails框架及MySQL数据库配置的理解。

    Rails 101 入门电子书

    #### 八、补充章节:RESTful on Rails - **深入理解RESTful**: - RESTful API的设计原则。 - 如何在Rails中实现RESTful接口。 - **案例分析**: - 分析一个典型的RESTful应用示例。 #### 九、练习作业2-在Group...

    rails2.3.2

    6. 开发者工具:Rails 2.3.x 包含了 Rails Console,一个交互式的命令行工具,以及 Rails Server,用于运行应用程序。此外,还有 Scaffolding 机制,可以自动生成基本的 CRUD(创建、读取、更新、删除)操作的控制器...

Global site tag (gtag.js) - Google Analytics