IPv6 モデルを持つレール アプリに取り組んでいます。IPv6 アドレスを 2 つの 32 ビット整数と 64 ビット整数で格納しています。
+-----------------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+---------------------+------+-----+---------+----------------+
| global_routing_prefix | int(11) unsigned | YES | | NULL | |
| subnet_identifier | int(11) unsigned | YES | | NULL | |
| interface_identifier | bigint(20) unsigned | YES | | NULL | |
残念ながら、範囲内の IP を検索する場合、MySQL はすべての演算を符号付き bigint で行うため、次のようになります。
mysql> select 2 BETWEEN 0 AND 18446744073709551614;
+--------------------------------------+
| 2 BETWEEN 0 AND 18446744073709551614 |
+--------------------------------------+
| 0 |
+--------------------------------------+
私ができる回避策はありますか、それとも interface_identifier によって 2 つの unsigned int に分割する必要がありますか?
ありがとう、ドナルド