2010-06-10 36 views
0

我一直在使用MSSQL 2005與Rails相當長的一段時間,並決定在我的項目中碰到我的寶石,遇到問題。從2.2.22升級到ActiveRecord-sqlserver-adapter到2.3.8,現在得到一個ODBC錯誤

我從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

我不得不想知道爲什麼在實際使用ODBC時使用activerecord-sqlserver-adapter?我建議查看[這個頁面](http://odbc-rails.rubyforge.org/),它會引導你通過一個合適的ODBC設置來進行事務處理 - 這又會讓你改變你的Rails應用程序從SQL Server到任何其他ODBC可訪問的目標,當/如果這是可取的。正確編寫的ODBC客戶端應用程序在查詢中使用ODBC基元和轉義 - 並且*驅動程序*將它們定製到目標DBMS API。 Rails不應該關心你打的什麼DBMS。 – TallTed 2014-07-03 20:23:20

回答

-1

我剛剛有一個類似的問題。刪除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 

作品甘甜)

+0

看起來好多了,但Rails如何知道使用sqlserver適配器,或者更具體地說,ActiveRecord是否專門爲MSSQL更改了查詢? – stuartc 2010-06-11 08:59:30

+0

我並不完全明白它完全對不起。但我認爲activerecord-odbc適配器與FreeTDS會談哪個實習生會與sql server進行交流。無論如何,我的rails應用程序工作正常,沒有activerecord-sqlserver-adapter。但我只在sql服務器上調用存儲過程,所以也許這對普通查詢來說不起作用。值得一試雖然。祝你好運。 – Andrew 2010-06-13 14:55:24

+0

TinyTDS非常容易,而且SQL Server適配器(不是odbc)經過了很好的測試,並且充分利用了SQL Server的所有需求。 – MetaSkills 2011-09-13 14:29:44

相關問題