2010-01-25 78 views
3

我有一個MS SQL數據庫正在運行(MS SQL 2005),並通過net.sourceforge.jtds.jdbc.Driver連接到它。使用net.sourceforge.jtds.jdbc.Driver時varchar(max)列的錯誤

該查詢適用於除varchar(max)之外的所有列。任何想法如何解決這個問題?

我正在使用jdbc驅動程序將數據索引運行到SOLR實現中。

(我不控制數據庫,所以一等獎的解決辦法是在那裏我可以調整的SQL命令來獲得期望的結果)

感謝

+0

什麼是查詢? –

+0

選擇 \t b.Title \t,永久 \t,主題 \t明文 \t,標籤 \t,轉換(爲nvarchar(50),m.CreationDate,127)作爲MessageCreationDate \t,轉換(爲nvarchar(50) ,m.LastDateUPdated,127),爲MessageLastDateUpdated \t,上b.BlogId = m.BlogId m.messageid 來自博客b(NOLOCK) 內加入消息m(NOLOCK) 其中b.deleted = 0和m.deleted = 0 –

回答

9

我發現什麼看起來是一個答案。在設置連接到SQL服務器的驅動程序時,我沒有指定useLobs = false。我有點擔心這會對性能產生什麼影響,但至少現在它可以工作。

<dataSource 
    driver="net.sourceforge.jtds.jdbc.Driver" 
     url="jdbc:jtds:sqlserver://server/database;useLOBs=false" 
    user="user" 
    password="password" /> 
+0

JDBC驅動呃設置對我來說總是顯得很隨意,很簡單的例子! –

+0

有同樣的問題,這種解決方案爲我工作:)。不過,我有興趣知道爲什麼這個工作,並在他們的網站有一個很好的描述:http://jtds.sourceforge.net/faq.html,搜索useLOBs,如果你想知道爲什麼:) – Roskvist

+0

非常感謝。你拯救了我的生命...... – mcacorner

1

我與連接到MS SQL 2K3有同樣的問題。 useLOBs = false對我不起作用,但將SELECT更改爲CAST(Name AS varchar(255))'Name'對我有用。

相關問題