将activerecord-sqlserver-adapter从2.2.22升级到2.3.8,现在出现ODBC错误

时间:2010-06-10 13:20:48

标签: ruby-on-rails ruby sql-server-2005 unixodbc

我一直在使用带有Rails的MSSQL 2005已经有一段时间了,并决定在我的一个项目上搞砸我的宝石并遇到问题。

我从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并没有弃用警告,一切似乎都很好,但显然是为了更新,任何想法可能会在适配器中发生什么变化导致这种情况?

2 个答案:

答案 0 :(得分:1)

您应该将TinyTDS与适配器一起使用,而不是ODBC。即使在最新的2.3版本中,我也支持TinyTDS。这是维基页面。

https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/wiki/Using-TinyTds

TinyTDS的好处在于它经过测试可以从SQL Server上的每个类型返回良好的数据,并且是unicode安全的。

答案 1 :(得分:-1)

我遇到了类似的问题。删除activerecord-sqlserver-adapter并使用activerecord-odbc-adapter(版本2.0)。适合我。

我刚刚卸载了activerecord-sqlserver-adapter,dbi和dbd-odbc。然后安装了activerecord-odbc-adapter并将我的db配置更改为

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

作品甜蜜:)