時々、「クエリ記法が間違っています。」でエラーになってしまいます。

お疲れ様です。

関連レコードの項目を条件付きで集計
https://cybozudev.zendesk.com/hc/ja/articles/203030394
の記事をまねて、JavaScriptで、関連レコードの値を取得するコードを書いています。
ちゃんと動作するのですが、時々、30行目の、xmlHttp.responseTextで、

"{"message":"入力内容が正しくありません。","id":"1505999166-1023156141","errors":{"query":{"messages":["クエリ記法が間違っています。"]}},"code":"CB_VA01"}"

が返ってくる、レコードがあります。
そのレコードは何度やっても同じ結果です。
query部分は下記です。

var man_rid_str = man_rid.value;
var query = 'In_Reply_To like "' + man_rid_str + '"' + ' limit 100 offset ' + offset;

 当初は、そのレコードのman_ridの値に特殊のコードが入っているのでは?と疑って、色々確認したのですが、

不思議なことに、同じレコードを更新(値は何も変えずに)すると、エラーは発生しなくなります。
正直、不思議で仕方がありませんが、同じような経験をお持ちの方、心当たりがある方は、何かアドバイスをお願いします。
確実に再現するコードが書けないので、残念なのですが、運用していると時々発生して困っています。
よろしくお願いします。

同じような状況になったことはなく、お答えできかねるのですが、他に有効な回答がない場合は是非、

ブラウザのDeveloper toolsからNetworkタブのHeaderを確認し、どういったクエリが送信されているかを確認してみてください。

参考: http://www.buildinsider.net/web/chromedevtools/01#page-4

 

その内容を貼り付けていただければ,もしかするとなにか分かるかもしれません。

村濱一樹 さま

アドバイスに従って調査したら不具合がわかりました。

man_rid.value の最後に0x0dが入っていたらしく、それが悪さをしていたようです。
文字列1行なのですが、REST APIで書き込むときに、0x0dが入ってもそのまま保存されるのですね。
ブラウザで保存しなおすと、0x0dが無くなるのでエラーが発生しなくなるようで、原因が分かり、ホントすっきりしました。
デバッグ中に表示される文字列ではこの0x0dが見つけられなかったので気が付きませんでした。
本当に助かりました。ありがとうございます。

> 文字列1行なのですが、REST APIで書き込むときに、0x0dが入ってもそのまま保存されるのですね。

なるほど、それは知りませんでした。思わぬ罠ですね。解決できたということでなによりです。

 

今回のようにDeveloper toolsを使えばデバッグも楽になるかと思いますので、ぜひ下記もご一読くださいませ。

動かない?そんな時はデバッグをしてみよう!入門編

 

 

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。