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