正如"ipv6-capable inet_aton and inet_ntoa functions needed"中所要求的,目前没有用于存储IPv6地址的MySQL函数.建议存储/插入的数据类型/功能是什么?(我不打算将它们存储为字符串).我也不想把IPv6地址分成两个INT.
正如"ipv6-capable inet_aton and inet_ntoa functions needed"中所要求的,目前没有用于存储IPv6地址的MySQL函数.建议存储/插入的数据类型/功能是什么?(我不打算将它们存储为字符串).我也不想把IPv6地址分成两个INT.
怎么样:
BINARY(16)
这应该足够有效.
目前,MySQL服务器中没有将文本IPv6地址从/转换为二进制的功能,如该错误报告中所述.您要么需要在应用程序中执行此操作,要么可能需要在MySQL服务器中创建一个UDF(用户定义函数)来执行此操作.
UPDATE:
MySQL 5.6.3支持IPv6地址,请参见以下内容:"INET6_ATON(expr)".
数据类型是VARBINARY(16)
,而不是我之前建议的BINARY(16)
.唯一的原因是MySQL函数适用于IPv6和IPv4地址.BINARY(16)
可以只存储IPv6地址并保存一个字节.处理IPv6和IPv4地址时应使用VARBINARY(16)
.
对于MySQL和MariaDB的旧版本的实现,请参见以下内容:"EXTENDING MYSQL 5 WITH IPV6 FUNCTIONS".