我有一个返回unsigned long long值的 MySQL UDF。当我在 MySQL 中调用此函数并且数据已保存在数据库中时,MySQL 会返回警告:
“ BIGINT UNSIGNED 值超出范围”。
如何在数据库中保存大的无符号长长数字?
MySQL 版本:5.5.43
操作系统:Ubuntu 14.04
请帮忙。
我有一个返回unsigned long long值的 MySQL UDF。当我在 MySQL 中调用此函数并且数据已保存在数据库中时,MySQL 会返回警告:
“ BIGINT UNSIGNED 值超出范围”。
如何在数据库中保存大的无符号长长数字?
MySQL 版本:5.5.43
操作系统:Ubuntu 14.04
请帮忙。
假设您的unsigned long long
数据类型是 64 位,它应该非常适合 MySQLBIGINT UNSIGNED
类型,它也是 64 位。
我建议检查宏的 C 实现limits.h
(或climits
C++)文件,ULONG_MAX
以确保它只有64 位。
但是,您应该知道,您可以对无符号值执行某些操作,这些操作也会给您此错误。如果您只是存储从 UDF 返回的确切值,则它可能不适用,但是,如果您正在执行以下操作:
select my_udf() - 22 from somewhere
并my_udf()
返回15
(例如),您将看到该错误消息,因为-7
无法以无符号类型表示。
如果是这种情况,解决方案可能就像将返回值强制转换为有符号类型一样简单,但我们需要更多关于它可以返回什么的信息才能正确提供建议。