私は軽量ソケット ベースの HandlerSocket クエリ システムを作成しましたが、これは完全に機能しました....この 1 つの小さな問題を除いて....
DB に、unique
5 つのキー部分を持つインデックスを持つテーブルがあります。
function, type, parameter, Module_ID, Site_ID
すべて文字列です。最初の 4 列は必須です。最後の (Site_ID) は、AND の可能性がありますNULL
。簡単な説明は、すべてのサイトが を持つレコードを共有するということですが、Site_ID = NULL
各サイトは、指定された独自のレコードでデフォルトのレコードを上書きできますSite_ID
。
私の Sockets クエリは、次のようにリクエストを準備します。
$request = array(
'indexid' => $key,
'op' => $query->get_type(),
'vlen' => count($query->get_keys()),
'keys' => implode("\t",$query->get_key_values()),
'limit' => $query->get_limit(),
'offset' => $query->get_offset());
// Join as TAB separated values
$request = implode("\t",$request)."\n";
したがって、5 つの列部分とキー値がすべて指定された場合は機能し、最初の 4 つの列と最初の 4 つのキー値が指定された場合は機能しますが、5 つの列すべてとそれに対応する 5 番目のキー値NULL
が使用された場合は何も返しません。最初の 4 つに一致し、 NULL
Site_IDを持つレコードがあることは事実です。
Site_ID が定義されているものと一致しないことを確認する必要があるため、3 番目のシナリオを使用できる必要があります。
問題は結合されたキー値にあると想定しています\t
が、ここで使用する正しい値が NULL 列の値と一致するかどうかはわかりません...そうではないためNULL
です。
5 番目の列に一致するように、このリクエストをフォーマットする正しい方法について誰かが光を当てることができればNULL
、私は感謝します!