正如“需要支持 ipv6 的 inet_aton 和 inet_ntoa 函数 http://bugs.mysql.com/bug.php?id=34037”,目前没有用于存储 IPv6 地址的 MySQL 函数。用于存储/插入的推荐数据类型/函数是什么?(我不打算将它们存储为字符串)。我也不想将IPv6 地址分为 2 个 INT。
怎么样:
BINARY(16)
这应该足够有效了。
目前,MySQL 服务器中没有将文本 IPv6 地址从二进制地址转换为二进制地址的功能,如该错误报告中所述。您要么需要在应用程序中执行此操作,要么可能在 MySQL 服务器中创建一个 UDF(用户定义函数)来执行此操作。
UPDATE:
MySQL 5.6.3已经支持IPv6地址,请参见以下内容:“INET6_ATON(表达式) http://dev.mysql.com/doc/refman/5.6/en/miscellaneous-functions.html#function_inet6-aton".
数据类型是VARBINARY(16)
代替BINARY(16)
正如我之前建议的那样。唯一的原因是 MySQL 函数同时适用于 IPv6 和 IPv4 地址。BINARY(16)
适合仅存储 IPv6 地址并节省 1 个字节。VARBINARY(16)
处理 IPv6 和 IPv4 地址时应使用。
旧版本 MySQL 和 MariaDB 的实现,请参阅以下内容:“使用 IPV6 功能扩展 MYSQL 5 http://labs.watchmouse.com/2009/10/extending-mysql-5-with-ipv6-functions/".
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)