Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在mysql数据库中使用整型ipv6?_Mysql_Mariadb_Ipv6_Ipv4 - Fatal编程技术网

如何在mysql数据库中使用整型ipv6?

如何在mysql数据库中使用整型ipv6?,mysql,mariadb,ipv6,ipv4,Mysql,Mariadb,Ipv6,Ipv4,我有一个存储ip地址的表。为了更快地访问,我还存储了ip int。这是表结构 CREATE TABLE `ipv6_test` ( `ip_string` varchar(20) DEFAULT NULL, `ip_int` double DEFAULT null ) ; 我使用了以下方法来获得ip地址的整数版本 new BigInteger(1, com.google.common.net.InetAddresses.forString(ip).getAddress()); 对于i

我有一个存储ip地址的表。为了更快地访问,我还存储了ip int。这是表结构

CREATE TABLE `ipv6_test` (
  `ip_string` varchar(20) DEFAULT NULL,
  `ip_int` double DEFAULT null
) ;
我使用了以下方法来获得ip地址的整数版本

new BigInteger(1, com.google.common.net.InetAddresses.forString(ip).getAddress());
对于ipv4地址,一切正常,但我的代码在存储ipv6地址时开始失败

如何在mysql数据库中存储BigInteger? 我正在考虑使用VARBINARY。我可以在VARBINARY列上创建索引吗

与整数索引相比,VARBINARY的性能如何?

将IPv4+IPv6存储转换为VARBINARY(16)

是的,您可以使用VARBINARY作为索引。它实际上是一个没有字符编码的VARCHAR。它可能比整数慢一点,但整数不能做同样的工作。你可能不会注意到,所以不要过早地优化。它最多只有16个字符,所以不多

如果要保留文本版本以便于检索,请创建一个将varbinary转换回的文件。

将其转换为用于IPv4+IPv6存储的varbinary(16)

是的,您可以使用VARBINARY作为索引。它实际上是一个没有字符编码的VARCHAR。它可能比整数慢一点,但整数不能做同样的工作。你可能不会注意到,所以不要过早地优化。它最多只有16个字符,所以不多


如果您想保留一个文本版本以便于检索,请创建一个将varbinary转换回的方法。

为什么
ip\u int
是双精度的?即使不注意它是近似值——无论如何它都不能接收128位数据。为什么
ip\u int
是双精度的?即使不注意它是近似值,但无论如何它都不能接收128位的数据。