【问题标题】:Why I can't store INET_ATON result to VARBINARY(4)?为什么我不能将 INET_ATON 结果存储到 VARBINARY(4)?
【发布时间】:2020-06-22 09:31:25
【问题描述】:

MySQL documentation 表示:数据类型 VARBINARY(16) 用于 IPv6 地址,数据类型 VARBINARY(4) 用于 IPv4 地址。

但是当我尝试将 INET_ATON 结果存储到 VARBINARY(4) 列时,我收到以下错误消息:

Data too long for column varbinary(4)

将 INET_ATON 结果存储到 VARBINARY(16) 是可以的!

怎么了?

【问题讨论】:

    标签: mysql types inet-aton


    【解决方案1】:

    来自INET_ATON's documentation

    要存储INET_ATON() 生成的值,请使用INT UNSIGNED 列 (...)

    【讨论】:

    • 它在以下上下文中表示:use an INT UNSIGNED column rather than INT, which is signed。而 MySQL UNSIGNED INT 大小正好是 4 个字节(如 VARBINARY(4))。
    • @NoSkill 执行文档中所说的是否有问题?
    • 尽管@NoSkill 这是一个很好的问题。您是否尝试过投射结果?
    • 所以...我应该将 INET_ATON 的结果显式转换为 VARBINARY(4) 吗?
    猜你喜欢
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 2015-01-26
    相关资源
    最近更新 更多