在MySQL中存储IPv6地址

正如在“具有ipv6function的inet_aton和inet_ntoafunction需要 ”中所要求的那样,目前没有用于存储IPv6地址的MySQLfunction。 推荐的数据types/函数用于存储/插入是什么? (我不打算把它们存储为一个string)。 我也不想把IPv6地址分成2个INT。

怎么样:

BINARY(16) 

这应该是有效的。

目前没有function将文本IPv6地址从/到二进制在MySQL服务器,如臭虫报告中指出。 您可能需要在应用程序中执行此操作,或者可能在MySQL服务器中创build一个UDF(用户定义的函数)来执行此操作。

更新:

MySQL 5.6.3支持IPv6地址,请参阅以下内容:“ INET6_ATON(expr) ”。

数据types是VARBINARY(16)而不是BINARY(16)正如我前面所build议的。 唯一的原因是MySQL函数同时适用于IPv6和IPv4地址。 BINARY(16)适用于仅存储IPv6地址并保存一个字节。 处理IPv6和IPv4地址时,应使用VARBINARY(16)

旧版本的MySQL和MariaDB的实现,请参阅以下内容:“ 使用IPV6function扩展MYSQL 5 ”。