0

我已经将 MSSQL 2005 与 Rails 一起使用了很长一段时间,并决定在我的一个项目中增加我的宝石并遇到问题。

我从 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,没有任何弃用警告,一切似乎都很好,但显然是为了保持最新状态,有什么想法可能导致适配器发生变化吗?

4

2 回答 2

1

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

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

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

于 2011-06-16T02:59:42.513 回答
-1

我只是有一个类似的问题。删除 activerecord-sqlserver-adapter 并使用 activerecord-odbc-adapter(2.0 版)。为我工作。

我刚刚卸载了 activerecord-sqlserver-adapter、dbi 和 dbd-odbc。然后安装 activerecord-odbc-adapter 并将我的数据库配置更改为类似

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

工作甜蜜:)

于 2010-06-11T03:14:58.717 回答