Обновлен activerecord-sqlserver-adapter с 2.2.22 до 2.3.8 и теперь получена ошибка ODBC - PullRequest
0 голосов
/ 10 июня 2010

Я уже довольно давно использую MSSQL 2005 с Rails, решил поднять свои драгоценные камни в одном из моих проектов и столкнулся с проблемой.

Я перешел с 2.2.22 на 2.3.8 (последний на момент написания), и внезапно я получил это:

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

Я использую DSN-соединение с FreeTDS, мой 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 ]

1 голос
/ 16 июня 2011

Вы должны использовать TinyTDS с адаптером, а не ODBC. У меня есть поддержка TinyTDS даже в последних версиях 2.3. Вот вики-страница.

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

Преимущество TinyTDS в том, что он проверен на возвращение хороших данных из каждого типа на SQL Server и безопасен в Юникоде.

0 голосов
/ 11 июня 2010

У меня просто была похожая проблема.Удаление 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

Работает прекрасно :)

...