我在这里的数据库中遇到了麻烦,我使用Firebird 1.5.3,直到Noe以正常的方式读取或写入,但是当我运行一个过程时,我会得到空白的行结果和以下消息:

算术异常,数字溢出或字符串截断。

SQL代码:-802 IB错误编号:335544321

因此,我将其与一个月前的备份数据库进行了比较,它效果很好,我将数据排成一行。为了确保我的代码不会更改,我将两个过程复制在Winmerge(DIFF比较)中,但没有任何不同。为了确保我的错误来自数据,我运行了旧日期交易(1年历史数据)的过程,但我仍然收到这些消息。

我检查了过程中的Aritmethic逻辑,修改了,但没有运气。有人可以为此提供帮助吗?

一堆,

有帮助吗?

解决方案

经过长时间的描述,我发现了以某种方式使我烦恼的障碍。主数据现在具有Longger字符(VARCHAR)的变化。在我的过程中,它被放入较小的varchar尺寸,假设10个字符。虽然新字符串大约15。 ...或字符串截断...。. 。但是无论如何,感谢您关注我的问题,并感谢您所写的线索,它可以为我节省,给我一个想法来追踪它。

一堆,

其他提示

具有完全相同数据的不同行为(在备份数据库中和Live One中)很奇怪。也许其他一些过程或触发器正在实时数据库中弄乱您的查询。

由于您说您不能在此处发布代码,因此我建议您可以尝试消除其他一些可能性。

“数字溢出或字符串截断。” 是您遇到的错误。

  • 查询有吗 SUM() 还是其他Aggegate功能?
  • 它是否有任何字符串操纵功能?

如果是在上述任何一个上,请尝试一一删除任何此类部分,然后运行修改的查询。因此,您可能会发现查询的哪一部分产生错误。


注意:相同的数据库结构,相同的数据和相同的查询 不是 由于非确定性功能,总是产生相同的结果 NOW()RAND(). 。如果这些函数的结果用于进一步的计算,则可能会在一次运行中而不是在另一个运行中发生算术错误,例如除法或溢出或其他类型的错误。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top