我有一个mysql数据库,其中有一个表,其中ipv4和ipv6 ip被存储为INT(10) UNSIGNED。为了检索ipv4 ip地址,我使用了函数INET_NTOA
SELECT INET_NTOA( client_ip ) FROM mytable1;
适用于ipv4 ip。但是所有的ipv6 ip都会返回:
6.0.0.0
如果我尝试使用函数INET6_NTOA ( client_ip )或INET6_NTOA(UNHEX( client_ip ))检索ipv4和ipv6 ip,它不起作用,我只得到输出:
NULL
INET6_NTOA ( client_ip )
或者:
NULL
INET6_NTOA(UNHEX( client_ip ))
是否有其他方法可以从我的数据库中检索ipv6 ip?需要在bash中执行此操作。
数据库版本: 10.2.12-MariaDB MariaDB服务器
发布于 2018-02-03 02:45:24
INT(10) UNSIGNED列是4 bytes,即32位。
128 bits是IPv6地址。
您存储在该列中的任何IPv6地址都将被截断,并且无法恢复。
要在MySQL中存储IPv6地址,请使用VARBINARY(16) (由INET6_ATON返回)或BINARY(16)。
https://stackoverflow.com/questions/48588678
复制相似问题