2011-03-14 71 views
0

我得到這個錯誤:Illegal mix of collations (greek_general_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation '=',當我把這個店礦的過程:mysql的:在一個存儲過程的問題排序規則的非法組合

DELIMITER // 

CREATE PROCEDURE setVehicleStats (vehID text, vehStatus text, vehLat double, vehLon double) 
BEGIN 

    UPDATE vehicles SET st=vehStatus, lat=vehLat, lon=vehLon WHERE id=vehID; 

END// 

雖然我沒有問題,當我直接運行更新查詢:UPDATE vehicles SET st='Καλημέρα' WHERE id='A001';

我試圖明確聲明每個字段的字符集等。問題似乎只有當我打電話給程序!任何幫助?謝謝...

+1

爲什麼地球上您使用文本數據類型的ID和狀態 - 這是一個有點極端,你不覺得? –

回答

0

我認爲問題是與vehStatus參數的排序規則。看來服務器或連接默認字符集設置爲latin1,而greek_general_ci排序規則使用greek字符集(ISO 8859-7)。 嘗試宣告你這樣的參數:

vehStatus text character set greek 
+0

這解決了問題!謝謝。該表的默認字符集設置爲希臘語。你的意思是哪個默認字符集? – Vassilis

+0

服務器的默認值爲連接。在這種情況下,我認爲引起問題的原因是服務器默認字符集。 – Xint0

+0

再次感謝! – Vassilis

相關問題