3

在我的 Rails 测试环境中,我有一个user_id看起来像1234-567abc89. 通过在不同的表中查询此用户,我得到了不一致的行为。大多数查询都有效,但运行一个特定查询失败:

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

因此,出于某种原因,连字符以外的所有内容都被切断了。我意识到对于有效的查询,它正在查找 user1234而不是1234-567abc89,但是如果所有其他查询都有效,那么知道为什么只有这个会返回错误吗?

4

1 回答 1

5

你需要包括报价。

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

因为该user_id列需要字符类型的数据,所以它将获取您的值 (1234-567abc89) 并将其解析为整数,截断连字符后的内容。如果您将其包含在引号中,它将接受它作为字符串并正确传输。

享受和好运!

于 2012-07-13T17:25:44.200 回答