2012-07-13 55 views
3

在我的Rails測試環境中,我有一個user_id,看起來像1234-567abc89。通過在不同的表中查詢此用戶,我得到了不一致的行爲。大多數查詢工作正常,但在運行一個特定的查詢失敗:連字符在mysql查詢中造成奇怪行爲的字符串

ActiveRecord::StatementInvalid (Mysql::Error: Unknown column '1234' in 
'where clause': SELECT * FROM `point_allocations` WHERE (user_id = 1234-567abc89)): 

所以,出於某種原因,一切都超出了連字符被截斷。我意識到,對於查詢工作,它正在查找用戶1234,而不是1234-567abc89,但如果所有其他工作,任何想法爲什麼只有這一個會返回一個錯誤?

+1

在字符串'1234-567abc89'周圍加上引號? – 2012-07-13 17:25:57

+0

爲什麼你的user_id字母數字? * cry * – Ghost 2012-07-13 17:26:16

+0

數據庫中user_id的列規格是什麼? VARCHAR(255)?整數? – thisfeller 2012-07-13 17:27:06

回答

5

您需要加入引文。

SELECT * FROM `point_allocations` WHERE (user_id = '1234-567abc89') 

由於user_id柱期望字符類型的數據,將需要的值(1234-567abc89)並解析它爲一個整數,截斷連字符後的內容。如果將其包含在引號中,它會將其作爲字符串接受並正確傳輸。

享受和祝你好運!