max*_*o87 3 mysql sql database ruby-on-rails
在我的Rails测试环境中,我有一个user_id
看起来像1234-567abc89
.通过在不同的表中查询此用户,我得到了不一致的行为.大多数查询都有效,但运行一个特定查询失败:
ActiveRecord::StatementInvalid (Mysql::Error: Unknown column '1234' in
'where clause': SELECT * FROM `point_allocations` WHERE (user_id = 1234-567abc89) ):
Run Code Online (Sandbox Code Playgroud)
因此,出于某种原因,连字符之外的所有内容都会被切断.我意识到,对于有效的查询,它正在查找用户1234
而不是1234-567abc89
,但如果所有其他工作,任何想法为什么只有这一个会返回错误?
您需要包含报价.
SELECT * FROM `point_allocations` WHERE (user_id = '1234-567abc89')
Run Code Online (Sandbox Code Playgroud)
因为user_id
列需要字符类型的数据,所以它将获取您的值(1234-567abc89)并将其解析为整数,截断连字符后的内容.如果将其包含在引号中,它将接受它作为字符串并正确传输.
享受并祝你好运!
归档时间: |
|
查看次数: |
10595 次 |
最近记录: |