站长们要为IPv6普及可能带来的数据库储存问题做好准备。
By
lincanbin
at 2015-04-11 • 1人收藏 • 3241人看过
有不少人喜欢把IP v4转换成整数,然后用一个unsigned int(10)来储存用户IP,这个方法可能会在IP v6普及后导致用户访问异常。
站长们最好先做好准备。
3 个回复 | 最后更新于 2015-04-11
登录后方可回帖
像我不需要做范围查询,只是做个记录,用一个足够大的字符串字段来储存IPv6就是一个最简单的解决方案。
或者将IPv6也转换为整数,不过MySQL中的unsigned bigint也只有64位,最大也就是18446744073709551615,比起IPv6的128位还是差了许多,如果硬要这么做也可以开两个bigint储存然后联合索引。
或者用binary(16)储存?
不过IPv6转换为长整形之后,从数据库都出后,一些语言处理长整形也是会溢出的,需要警惕。