`
SwiftHorse
  • 浏览: 213624 次
  • 性别: Icon_minigender_1
  • 来自: 广东
社区版块
存档分类
最新评论

Rails 连接 Sql Server的问题

阅读更多
  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适配器

    本主题将深入探讨如何在Rails应用中使用SQL Server作为数据存储,特别关注`activerecord-sqlserver-adapter`这个gem,它使得Ruby的ActiveRecord能够与Microsoft SQL Server无缝集成。 `activerecord-sqlserver-...

    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: ...

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

    这个“使用PetaPoco ORM管理SQLServer,SQLIte,MySQL和ProgreSQL数据库”的主题,旨在展示PetaPoco如何与多种数据库类型无缝集成,包括SQL Server、SQLite、MySQL和PostgreSQL。 首先,PetaPoco的简单性和高效性是...

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

    如果你想要在ActiveRecord框架中使用Tiny_TDS,你需要额外安装`activerecord-sqlserver-adapter` gem: ``` gem install activerecord-sqlserver-adapter ``` 然后,在`config/database.yml`文件中配置数据库连接...

    Ruby on rails 数据库详细配置

    对于连接到Microsoft SQL Server(MSSQL),则需要使用不同的适配器,例如`sqlserver`或`tinytds`,并且可能需要额外的库,如`activerecord-sqlserver-adapter`。配置可能会类似这样: ```yaml production: ...

    ruby on rails 开发环境包(ruby1.8.7,rails2.2.3)

    7. **启动服务器**:运行`rails server`命令启动Rails开发服务器,然后在浏览器中访问`http://localhost:3000`查看你的应用。 8. **测试**:Rails内置了测试框架Test::Unit和Functional测试,用于编写和运行应用的...

    mssqlex:用于Elixir的Microsoft SQL Server适配器

    `mssqlex`是Elixir开发者连接Microsoft SQL Server的重要工具,它通过Ecto的API提供了一个方便、高效且功能丰富的接口。无论你是SQL Server的老用户还是Elixir的新手,`mssqlex`都能帮助你轻松地在Elixir项目中集成...

    11种连接数据库的方法

    .NET Framework中的ADO.NET提供了连接、命令、数据适配器和数据集等组件,用于与SQL Server、Oracle等数据库通信。使用`SqlConnection`类创建连接,`SqlCommand`执行SQL,`SqlDataAdapter`填充DataSet。 3. **...

    ruby on rails活动发布demo,intellij项目

    运行`rails server`命令,IDE会启动一个本地Web服务器,你可以通过浏览器访问`http://localhost:3000`来查看和测试应用。 Rails的活动发布功能可能涉及用户创建、编辑和查看活动,这通常需要定义相应的控制器、模型...

    rails2.0下实现《rubyonrails》中的mybook实例

    在数据库迁移文件(如`db/migrate/xxxx_create_books.rb`)中,Rails已经为我们自动生成了创建`books`表的SQL语句。 接着,我们可以创建一个控制器来处理HTTP请求,例如`rails generate controller Books`。这会...

    ruby on rails环境搭建学习笔记;passenger+nginx环境配置

    在 `config/database.yml` 文件中配置数据库连接信息。 14. **创建数据库:** ```sh rake db:create ``` 15. **迁移数据库:** ```sh rake db:migrate ``` #### 二、Passenger+Nginx 环境配置 Passenger ...

    golang常用的src包

    本话题主要探讨`golang`中的一些常用`src`包,包括`xorm`、`sqlserver`、`golang.org/x`、`go-redis`、`beego`和`mymysql`。这些包在不同的领域提供了强大的功能,使得Go语言的应用开发更加高效和便捷。 1. **xorm*...

    rottenpotatoes-rails-简介

    10. **Rails命令行工具**:如`rails new`用于创建新项目,`rails server`启动本地服务器,`rails generate`生成资源和文件等。 在`rottenpotatoes-rails-intro-master`这个压缩包中,你可以找到项目的源代码,包括...

    使ASP.NET与ASP,PHP,RAILS和JAVA对话的技巧(第1部分)

    此外,数据库连接也可以作为桥梁,比如都使用SQL Server,那么数据共享就变得相对简单。 在实践这些集成技巧时,开发环境的设置也很关键。Visual Studio提供了强大的跨语言支持,可以方便地调试和测试这些集成方案...

    网络编程备忘--各种常用函数色彩等

    例如,ASP中的Response对象、PHP的数据库连接函数、Ruby的类和模块、CSS的选择器、HTML标签的用法、SQL Server的查询语句、JavaScript的DOM操作等。每个章节可能还会包含示例代码和解释,帮助读者理解和应用这些技术...

    Ruby入门例子

    C:\railsDemo&gt;ruby script/server ``` 这将启动Rails内置的服务器,并监听默认端口 `3000`。 #### 七、测试效果 最后一步是在浏览器中访问 `http://localhost:3000/category` 来查看我们的Rails应用程序的效果。...

    web服务常用技术方式一览.docx

    总结起来,Web服务常用技术涉及动态脚本语言(如CGI、FastCGI、PHP、ASP、JSP等)、网站框架(如CGI、Rails等)、数据库系统(如SQL Server、Oracle、MySQL等)以及数据库管理和PHP的部署。了解和掌握这些技术对于...

    第一天:蜘蛛数据库浏览器网站

    要连接到SQL Server,可能需要第三方gem,如`activerecord-sqlserver-adapter`,因为它不是RoR的标准库支持的数据库。 3. **动态显示**:RoR允许通过 erb(嵌入式Ruby)模板在视图中动态生成HTML,根据数据库中的...

Global site tag (gtag.js) - Google Analytics