mysql - (inet6_aton()) 的奇怪问题,有时返回 null?SQL - 玛丽亚数据库
问题描述
有人可以解释这里发生了什么吗?为什么名称为sara的行在IP_address 中返回空值?它与其他代码完全相同吗?
这条线完美地工作:
INSERT INTO Users VALUES ("","Nina", "Bertilsson", "nina-hej@bertilson.test.se", (inet6_aton('46.246.78.163')), now(), "nina", "password");
但这会使用 inet6_aton 函数为 IP_Address 返回 NULL:
INSERT INTO Users VALUES ("","Sara", "Andersson", "andersson@sara.se", (inet6_aton('46.246.65.892')), now(), "sara", "password");
表格如下:
我正在将 XAAMP 与 mariaDB 一起使用。
解决方案
你可以这样简化你的问题:
为什么以下查询给出结果:
SELECT HEX(inet6_aton('46.246.78.163'));
+----------------------------------+
| HEX(inet6_aton('46.246.78.163')) |
+----------------------------------+
| 2EF64EA3 |
+----------------------------------+
而这个没有:
SELECT HEX(inet6_aton('46.246.65.892'));
+----------------------------------+
| HEX(inet6_aton('46.246.65.892')) |
+----------------------------------+
| NULL |
+----------------------------------+
这是因为第一个是有效的 IPv4 地址:
SELECT is_ipv4('46.246.78.163');
+--------------------------+
| is_ipv4('46.246.78.163') |
+--------------------------+
| 1 |
+--------------------------+
但第二个不是:
SELECT is_ipv4('46.246.65.892');
+--------------------------+
| is_ipv4('46.246.65.892') |
+--------------------------+
| 0 |
+--------------------------+
第二个的问题在于最后一个点之后的数字 - 892。它不能超过 255,但确实如此。
推荐阅读
- php - 主要内容未在 codeigniter 中显示
- php - Laravel 5.0 显示数组中键的值与值匹配的项目
- apache - 在 APACHE 中不使用协议进行重定向
- c++ - 另一个命名空间中函数的 C++ ADL
- html - 如何防止我的 td 堆叠在彼此下方?
- python - 在 Python 中剥离具有特定范围的 HTML 文件
- c# - 使用SignalR时如何访问hangfire中的Session(IDashboardAuthorizationFilter的实现中的Authrize方法)?
- apache-spark - 使用 pandas_udf 将 Spark Structured DataFrame 转换为 Pandas
- r - Shiny中是否有只读(不包括上传)的R功能?
- c# - 如何用图像替换数据网格视图中的数字?