ruby
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
分享到:
相关推荐
在Ruby中连接到Microsoft SQL Server数据库,你可以使用tiny_tds或者odbc等gem。附件是使用tiny_tds gem的一个基本示例 请将your_server_name、your_database_name、your_username、your_password和your_table_name...
本主题将深入探讨如何在Rails应用中使用SQL Server作为数据存储,特别关注`activerecord-sqlserver-adapter`这个gem,它使得Ruby的ActiveRecord能够与Microsoft SQL Server无缝集成。 `activerecord-sqlserver-...
在Ruby on Rails框架中,与SQLServer 2000集成可能会比与其他常见的数据库系统(如MySQL或PostgreSQL)稍复杂一些,因为SQLServer 2000的兼容性问题和缺少官方支持。然而,通过一些第三方库和适当的配置,我们仍然...
### Ruby连接Windows下的SQL Server数据库方法详解 在本篇文章中,我们将详细介绍如何使用Ruby语言连接并操作部署在Windows系统下的SQL Server数据库。该方法适用于希望使用Ruby进行数据库操作的开发者们,尤其是...
如果你想要在ActiveRecord框架中使用Tiny_TDS,你需要额外安装`activerecord-sqlserver-adapter` gem: ``` gem install activerecord-sqlserver-adapter ``` 然后,在`config/database.yml`文件中配置数据库连接...
样本类别 端到端示例应用程序,这些示例应用程序说明了SQL ...这些示例显示了如何使用各种编程语言(包括Python,C#,F#,Java,Ruby,Node.js和PHP)连接到SQL数据库。 货柜 显示容器方案中各种SQL Server的示例。
首先,根据文档标题和描述,我们可以明确这篇指南主要讲述了如何使用MySQL Workbench中的Migration Wizard工具来实现从Microsoft SQL Server到MySQL的数据库迁移。Migration Wizard是一个图形化的工具,它能够指导...
"Ruby-rubyserver标准文件协议的生产就绪实现" 提到的是一个专门针对Ruby实现的、遵循标准文件协议的服务器解决方案,适用于生产环境。这种实现确保了在高并发和稳定性的需求下,服务器依然能高效、可靠地运行。 1....
标签“Ruby开发-数据库驱动器”表明这与Ruby语言的数据库连接有关,TinyTDS就是这样的工具,为Ruby提供了一种与SQL Server交互的方式。 在压缩包文件“tiny_tds-master”中,我们可以预期找到TinyTDS项目的源代码...
这个“使用PetaPoco ORM管理SQLServer,SQLIte,MySQL和ProgreSQL数据库”的主题,旨在展示PetaPoco如何与多种数据库类型无缝集成,包括SQL Server、SQLite、MySQL和PostgreSQL。 首先,PetaPoco的简单性和高效性是...
4. **执行SQL查询**:一旦连接建立,你可以执行SQL查询。例如,获取表中的所有记录: ```ruby result = conn.execute('SELECT * FROM your_table') ``` 5. **处理结果集**:`result`对象包含了查询返回的所有行。你...
总结来说,连接Ruby和Drizzle数据库涉及到使用`DBI`库,配置ODBC连接,编写SQL查询,以及可能的事务和错误处理。通过这样的连接,开发者能够有效地在Ruby应用程序中存取和管理Drizzle数据库的数据。同时,对源码的...
通过创建Database对象,设置连接字符串,然后使用Open方法打开连接,可以方便地执行SQL并展示结果。 5. **Python PyODBC** Python的PyODBC模块提供了一个ODBC接口,支持多种数据库。使用`pyodbc.connect()`创建...
FreeTDS在该平台上的顺利安装意味着它可以作为这些环境中连接SQL Server的可靠工具。 FreeTDS的主要功能包括: 1. **多平台支持**:FreeTDS不仅支持Linux,还支持其他Unix变体,如FreeBSD、OpenBSD等,甚至可以在...
对于连接到Microsoft SQL Server(MSSQL),则需要使用不同的适配器,例如`sqlserver`或`tinytds`,并且可能需要额外的库,如`activerecord-sqlserver-adapter`。配置可能会类似这样: ```yaml production: ...
activerecord-sqlserver-adapter-mirroring 一个简单的插件,它为添加了数据库镜像支持。 目标 Rails 4.1.x 和 activerecord-sqlserver-adapter 4.1.0。 用法 添加到 Gemfile: gem 'tiny_tds' gem '...
TinyTDS gem旨在满足使用FreeTDS的DB-Library API将结果从Ruby连接,查询和迭代到Microsoft SQL Server或Sybase数据库的极其普通的用例。 TinyTDS提供对Ruby原语的自动转换以及适当的编码支持。 它将所有SQL ...
首先,连接Oracle数据库需要Ruby的一个特定库——Ruby/Oracle 调用接口 (OCI8),它是基于Ruby/DBI模块的数据库驱动程序。RubyDBI提供了一个抽象层,使得开发者能够使用统一的API与不同的数据库系统(如JDBC或ODBC)...