3

私の Rails テスト環境では、 のuser_idような があり1234-567abc89ます。このユーザーを別のテーブルでクエリすると、一貫性のない動作が発生します。ほとんどのクエリは機能していますが、1 つの特定のクエリを実行すると失敗します。

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

そのため、何らかの理由で、ハイフン以降がすべて途切れています。1234機能するクエリについては、代わりにユーザーを検索していることに気付きましたが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 に答える