2010-01-17 57 views
2

我運行此查詢:@是不是在參數在我的MySQL查詢

LOAD DATA INFILE 'SomePath' INTO TABLE SomeTable 
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' 
(column1,column2,@Column3Value) 
SET column3 = CAST(@Column3Value AS UNSIGNED); 

我使用@ Column3Value PARAM因爲這個領域是一個位類型字段,這是唯一的出路從文件加載到這種類型的字段。此查詢在MySQL查詢瀏覽器中正常工作。

問題是,當我從.net應用程序使用.net連接器運行此查詢時。 我得到一個錯誤,我沒有提供@ Column3Value參數,但事情是我不應該提供任何東西。我怎麼能告訴查詢@ Column3Value不是一個參數?

有什麼建議?

回答

0

at符號被認爲是某些接口中的綁定參數。你可以用一個反斜槓(\)轉義它,但是確保當傳遞給底層查詢函數時不會丟失反斜槓,並且不會丟失...

+0

這就是我現在嘗試的,仍然得到相同的錯誤: LOAD DATA INFILE'SomePath'INTO TABLE SomeTable FIELDS TERMINATED BY','ENCLOSED BY'''線終止'\ r \ n'(column1 ,column2,\ @ Column3Value)SET column3 = CAST(\ @ Column3Value AS UNSIGNED); – Liron 2010-01-17 07:44:48

1

Liron,給連接字符串添加'AllowUserVariables = true' - 這會導致您的用戶變量被識別爲不是輸入參數。

發生這種情況是因爲MySql連接器代碼(從6.4開始)嘗試通過查找'?'來確定給定標記是否爲輸入參數。和字符串開頭的'@' - 如果'AllowUserVariables'被設置爲true,它會在序列化參數列表時忽略以'@'開頭的變量。如果您有興趣,請查看MySql.Data.MySqlClient.Statement的代碼以查看本文。

p.s.這是兩個月前發佈的,不知道這對你是否有用 - 我找到了一個問題,同時尋找我自己的問題的答案。 > _ <