正如“具有ipv6功能的inet_aton和inet_ntoa功能所需 ”中所要求的那样,当前没有用于存储IPv6地址的MySQL函数。建议用于存储/插入的数据类型/功能是什么?(我不打算将它们存储为字符串)。我也不想将IPv6地址分为2个INT。
怎么样:
BINARY(16)
那应该足够有效。
如该错误报告中所述,当前在MySQL服务器中没有将文本IPv6地址从二进制转换为二进制的功能。您需要在应用程序中执行此操作,或者可能需要在MySQL服务器中创建UDF(用户定义的函数)来执行此操作。
更新:
MySQL 5.6.3支持IPv6地址,请参见以下内容:“ INET6_ATON(expr) ”。
数据类型VARBINARY(16)不是BINARY(16)我之前建议的那样。这样做的唯一原因是MySQL函数可同时用于IPv6和IPv4地址。BINARY(16)仅存储IPv6地址并节省一个字节就可以了。VARBINARY(16)同时处理IPv6和IPv4地址时应使用。
VARBINARY(16)
对于旧版本的MySQL和MariaDB的实现,请参见以下内容:“ 使用IPV6功能扩展MYSQL 5 ”。