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