c++ usigned long long range vs mysql unsigned bigint range

c++ usigned long long range vs mysql unsigned bigint range

本文关键字:long range unsigned bigint mysql vs c++ usigned      更新时间:2023-10-16

我有一个MySQL UDF返回unsigned long long值。当我在MySQL中调用这个函数并且数据已经保存在数据库中时,MySQL返回警告:
"BIGINT UNSIGNED值超出范围".
如何在数据库中保存大型无符号长长数?

MySQL version: 5.5.43
OS: Ubuntu 14.04

请帮。

假设您的unsigned long long数据类型是64位,它应该非常适合MySQL的BIGINT UNSIGNED类型,也是64位。

我建议检查您的C实现limits.h(或climits for c++)文件的宏ULONG_MAX,以确保它只有64位。


你应该知道,在unsigned值上执行的某些操作也会导致这个错误。如果您只是简单地存储从UDF返回的确切值,则可能不适用,但是,如果您要执行以下操作:

select my_udf() - 22 from somewhere

and my_udf()返回15(例如),您将看到错误消息,因为-7不能用unsigned类型表示。

如果是这种情况,解决方案可以就像将返回值强制转换为有符号类型一样简单,但是我们需要更多关于它可以返回什么的信息来正确地建议。

相关文章: