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