Yoh*_*ann 5 mysql database-design datatypes network
我必须将 IPv4/v6 地址和网络(CIDR 表示法)存储在 MySQL 数据库中。不幸的是,我不得不使用 Mysql。
所以,我正在寻找inet
PostgreSql 类型的等效项。:
inet 类型在一个字段中包含 IPv4 或 IPv6 主机地址,以及可选的子网。子网由主机地址中存在的网络地址位数(“网络掩码”)表示。如果网络掩码为 32,地址为 IPv4,则该值不表示子网,仅表示单个主机。在 IPv6 中,地址长度为 128 位,因此 128 位指定唯一的主机地址。
此类型的输入格式为 address/y,其中 address 是 IPv4 或 IPv6 地址,y 是网络掩码中的位数。如果缺少 /y 部分,则 IPv4 的网络掩码为 32,IPv6 的网络掩码为 128,因此该值仅表示单个主机。在显示时,如果网络掩码指定了单个主机,则 /y 部分被抑制。
我知道 Mysql 5.6 INET_ATON(), INET_NTOA(), INET6_ATON(), INET6_NTOA()的以下功能。但我使用 Mysql 5.5 ......所以,忘记 INET6_xxxx。
我也知道以下问题“存储 IP 地址”,但它不涉及网络 CIDR 表示法。
您将如何inet
在 Mysql 5.5 中实现等效的类型?
inet
首先: MySQL 中还没有与 PostgreSql 类型等效的类型。
您应该只使用该string
类型来存储所有类型的 IP 地址。如果您需要它们全部采用某种格式,请在将它们插入数据库之前对其进行转换。
如果您需要用它们进行计算,正如您提到的,INET_ATON()
和INET_NTOA()
是需要使用的函数。
归档时间: |
|
查看次数: |
4438 次 |
最近记录: |