2010-06-10 53 views
0

我一直在使用MSSQL 2005与Rails相当长的一段时间,并决定在我的项目中碰到我的宝石,遇到问题。从2.2.22升级到ActiveRecord-sqlserver-adapter到2.3.8,现在得到一个ODBC错误

我从2.2.22转移到2.3.8(最新写作)和突然的,我得到这个:

ODBC::Error: S1090 (0) [unixODBC][Driver Manager]Invalid string or buffer length 

我使用的是freetds的DSN连接我database.yml看起来像这样:

adapter: sqlserver 
mode: ODBC 
dsn: 'DRIVER=FreeTDS;TDSVER=7.0;SERVER=10.0.0.5;DATABASE=db;Port=1433;UID=user;PWD=pwd;' 

现在在同时,我搬回到2.2.22,并没有废弃警告,一切似乎不错,但显然对于被最新的缘故,任何想法可能已经在改变适配器这可能导致这种情况?

+0

我不得不想知道为什么在实际使用ODBC时使用activerecord-sqlserver-adapter?我建议查看[这个页面](http://odbc-rails.rubyforge.org/),它会引导你通过一个合适的ODBC设置来进行事务处理 - 这又会让你改变你的Rails应用程序从SQL Server到任何其他ODBC可访问的目标,当/如果这是可取的。正确编写的ODBC客户端应用程序在查询中使用ODBC基元和转义 - 并且*驱动程序*将它们定制到目标DBMS API。 Rails不应该关心你打的什么DBMS。 – TallTed 2014-07-03 20:23:20

回答

-1

我刚刚有一个类似的问题。删除activerecord-sqlserver-adapter并使用activerecord-odbc-adapter(2.0版)。适用于我。

我刚刚卸载了activerecord-sqlserver-adapter,dbi和dbd-odbc。然后安装了activerecord-ODBC适配器和改变了我的数据库配置是像

your_database: 
    adapter: odbc 
    dsn: YourDNS 
    username: YourUsername 
    password: YourPassword 

作品甘甜)

+0

看起来好多了,但Rails如何知道使用sqlserver适配器,或者更具体地说,ActiveRecord是否专门为MSSQL更改了查询? – stuartc 2010-06-11 08:59:30

+0

我并不完全明白它完全对不起。但我认为activerecord-odbc适配器与FreeTDS会谈哪个实习生会与sql server进行交流。无论如何,我的rails应用程序工作正常,没有activerecord-sqlserver-adapter。但我只在sql服务器上调用存储过程,所以也许这对普通查询来说不起作用。值得一试虽然。祝你好运。 – Andrew 2010-06-13 14:55:24

+0

TinyTDS非常容易,而且SQL Server适配器(不是odbc)经过了很好的测试,并且充分利用了SQL Server的所有需求。 – MetaSkills 2011-09-13 14:29:44