0

私は MSSQL 2005 を Rails でかなり長い間使用してきましたが、自分のプロジェクトの 1 つに自分の gem を追加しようと決めたところ、問題が発生しました。

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

ODBC ではなく、TinyTDS をアダプターと共に使用する必要があります。最新の 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をインストールし、私のdb設定を次のように変更しました

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

うまくいきます:)

于 2010-06-11T03:14:58.717 に答える