Rails - Mac 10.6上的MS-SQL Server问题(unixODBC,FreeTDS)

时间:2010-05-25 05:31:26

标签: sql-server ruby-on-rails macos odbc

按照Rails wiki上的说明进行操作,并成功连接到带有TSQL的SQL Server 2000 - 无论是DSN-less还是DNS连接。我正在运行Mac OS X 10.6.3。

Wiki instructions here.

已安装ruby-odbc,dbi(0.4.0),dbd-odbc(2.4.5),activerecord-sqlserver-adapter(2.3.5)。

在我的database.yml(Rails 2.3.6)中:

development:
  adapter: sqlserver
  mode: ODBC
  dsn: 'DRIVER=/usr/local/lib/libtdsodbc.so;TDS_Version=8.0;SERVER=mssql01.discountasp.net;DATABASE=DB_164368_dmusd;Port=1433;uid=DB_164368_dmusd_user;pwd=Schools77;'

这会产生以下错误: ODBC ::错误:S1090(0)[unixODBC] [驱动程序管理器]无效的字符串或缓冲区长度

当我尝试使用DSN连接时,出现以下错误: ODBC ::错误:IM002(0)[unixODBC] [驱动程序管理器]未找到数据源名称,并且未指定默认驱动程序

我事实证实安装了FreeTDS驱动程序(libtdsodbc.so)并且路径正确。

有人能发现我的方式错误吗?提前谢谢。

3 个答案:

答案 0 :(得分:1)

我会将配置拆分为:

freetds.conf

[somesqlserver]
 host = HOST_ADDRESS
 port = 1433
 tds version = 8.0 # for SQL2000    

odbc.ini

[server_connection]
Driver = /usr/local/lib/libtdsodbc.so
Server = ip_address_of_server
Database = database_name
client charset = UTF-8  #needed only on osx

在database.yml

development:
adapter: sqlserver
mode: odbc
dsn: server_connection
username: your_username
password: your_password

Very good article for reference on osx but easily adaptable to unix

答案 1 :(得分:1)

按照本教程将rails应用程序连接到MS SQL Server

在Linux Box上从Rails连接到MicrosoftSQLServer: http://wiki.rubyonrails.org/database-support/ms-sql

答案 2 :(得分:0)

我强烈建议您在Mac OS X上忘记UnixODBC。而是将iODBC组件更新为the latest version

iODBC-- Apple选择与Mac OS X一起提供的开源ODBC驱动程序管理器 - 来自与开源ODBC Adapter for Ruby on Rails - OpenLink Software相同的来源。

使用商业ODBC驱动程序(例如that from OpenLink)测试(如果不部署)也可能值得花时间。这有助于缩小尝试使用“免费”驱动程序时遇到的错误来源。 (总是有成本 - 唯一的问题是你是花钱还是花时间。)

ObDisclaimer:我为OpenLink Software工作,但不会直接从任何选择使用我们产品的人那里获益。