INET_ATON()
返回一个IP地址转换的IPv4和IPv6两者成数
INET6_ATON()
返回的IPv6地址
的数字值的数字值i有一个塔包含的IPv4 &的IPv6两者。
我尝试转换那些数字“ip_long”(列名)
我用INET_ATON,
它只能转换的IPv4
我的问题是,是否INET6_ATON
转换纯IPv6或两者兼而有之?
是否有任何函数可以同时转换?我有百万行数据库需要转换。
INET_ATON()
返回一个IP地址转换的IPv4和IPv6两者成数
INET6_ATON()
返回的IPv6地址
的数字值的数字值i有一个塔包含的IPv4 &的IPv6两者。
我尝试转换那些数字“ip_long”(列名)
我用INET_ATON,
它只能转换的IPv4
我的问题是,是否INET6_ATON
转换纯IPv6或两者兼而有之?
是否有任何函数可以同时转换?我有百万行数据库需要转换。
INET6_ATON()
将转换ipv4和ipv6。如你所知,你需要MySQL版本5.6.x或更高版本。
该捕获只使用INET6_ATON()
和INET6_NTOA()
。将存储转换的IP的列将是VARBINARY(16)
类型。
SELECT INET6_NTOA(INET6_ATON("192.168.1.1"));
SELECT INET6_NTOA(INET6_ATON("2001:db8::1"));
请记住,test_table的ip
列是VARBINARY(16);
最近做了很多研究,这是我第一次看到应用程序应该添加一个'“:: FFFF:” '在IPv4之前。我们为什么需要这样做?不要说在doc中。http://dev.mysql.com/doc/refman/5.6/en/miscellaneous-functions.html#function_inet6-aton – Draven
@Draven。我已经使用“:: FFFF:”将IPv4映射到IPv6,但是在必须监听IPv4和IPv6连接的应用程序中(您知道,双栈节点),但无论如何,您是对的。 MySQL在存储和正确检索到VARBINARY列的IPv4地址方面非常聪明。我会编辑我的答案。干杯! –
INET6_ATON可用于MySQL 5.6及更高版本,以及文档http://dev.mysql.com/doc/refman/5.6/en/miscellaneous-functions.html#function_inet6-aton它也应该返回IPv4的值。要确认,请检查SELECT INET_ATON('10 .0.5.9')为ip4,INSET6_ATON('10 .0.5.9')为ip6;我无法测试它,因为我没有安装最新版本的MySQL。 – Suraj
或有任何方式在PHP中做到这一点? – Ben
你没有在MySQL中测试吗?我认为它应该工作。如果您对PHP感兴趣,并且您的目标是将IP转换为数字,请通过http://www.samclarke.com/2011/07/php-ipv6-to-128bit-int/。 – Suraj