データベース (MySql) では、いくつかの文字列値を保存し、保存する前にそれらの文字列の一意性をチェックしています。
高速な文字列比較 (記録する前に着信文字列が既に DB に存在するかどうかを確認することを意味します) の場合、着信文字列 (MD5) を高速化し、文字列を 2 つの等しい部分に分割し、それらを 2 つの bigint に変換し、別々に保存します。文字列を使用して、レコード要求が到着したら、複数列のインデックスでこれらの 2 つの bigint を検索したいと考えています。(もちろん、着信文字列、MD5 その文字列を取得し、2 つの bigint 部分を計算してから、データベースにクエリを実行します)
しかし、以下の「3 行目」では、「MySql Routine」で興味深いエラーが発生します。
...
declare mystring varchar(3000); -- line 1
declare md5bigint1value bigint; -- line 2
...
set md5bigint1value = conv(substring((md5(mystring)),1,16),16,10); -- line 3
...
「3 行目」で、エラー コード: 1264 と表示されます。
なぜこれが起こっているのか誰にも分かりますか?
さらに情報が必要な場合はお知らせください。どうもありがとうございました。