一尘不染

在MySQL中存储IPv6地址

mysql

正如“具有ipv6功能的inet_aton和inet_ntoa功能所需
”中所要求的那样,当前没有用于存储IPv6地址的MySQL函数。建议用于存储/插入的数据类型/功能是什么?(我不打算将它们存储为字符串)。我也不想将IPv6地址分为2个INT。


阅读 1284

收藏
2020-05-17

共1个答案

一尘不染

怎么样:

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地址时应使用。

对于旧版本的MySQL和MariaDB的实现,请参见以下内容:“ 使用IPV6功能扩展MYSQL
5

”。

2020-05-17