1
我有用于存储IP的MySQL列,数据类型为varbinary 16
。为什么我的IPV6在存储时被截断?
当我将IPV6保存到它中时,它为什么被截断?
2001:11ff:ffff:ffff:ffff:ffff:ffff:ffff
变为:
2001:11ff:ffff:f
我有用于存储IP的MySQL列,数据类型为varbinary 16
。为什么我的IPV6在存储时被截断?
当我将IPV6保存到它中时,它为什么被截断?
2001:11ff:ffff:ffff:ffff:ffff:ffff:ffff
变为:
2001:11ff:ffff:f
看来你正试图存储在您VARBINARY(16)
列的IPv6地址的字符串表示。您应该使用功能INET6_ATON()将其转换为VARBINARY(16)
,然后您可以使用INET6_NTOA()将其恢复。
MySQL 5.6.3支持IPv6地址,请参阅以下内容:“INET6_ATON(expr)”。
我应该存储什么数据类型,如果我想将它存储在字符串中,我的Mysql是5.5没有INET6 – Ben
您应该使用'VARBINARY(16)'类型。但是,函数INET6_NTOA()INET6_ATON()只在MySQL 5.6.3中添加。您可以升级到5.6或在客户端上转换它。 – mvp
我的共享主机是5.5:( – Ben