首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果IPV6 ip存储在整数(10)中,如何从mysql数据库中检索它们

如果IPV6 ip存储在整数(10)中,如何从mysql数据库中检索它们
EN

Stack Overflow用户
提问于 2018-02-03 02:19:41
回答 1查看 161关注 0票数 0

我有一个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服务器

EN

回答 1

Stack Overflow用户

发布于 2018-02-03 02:45:24

INT(10) UNSIGNED列是4 bytes,即32位。

128 bits是IPv6地址。

您存储在该列中的任何IPv6地址都将被截断,并且无法恢复。

要在MySQL中存储IPv6地址,请使用VARBINARY(16) (由INET6_ATON返回)或BINARY(16)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48588678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档