firebirddb无法运行程序,而其备份DB可以
-
24-10-2019 - |
题
我在这里的数据库中遇到了麻烦,我使用Firebird 1.5.3,直到Noe以正常的方式读取或写入,但是当我运行一个过程时,我会得到空白的行结果和以下消息:
算术异常,数字溢出或字符串截断。
SQL代码:-802 IB错误编号:335544321
因此,我将其与一个月前的备份数据库进行了比较,它效果很好,我将数据排成一行。为了确保我的代码不会更改,我将两个过程复制在Winmerge(DIFF比较)中,但没有任何不同。为了确保我的错误来自数据,我运行了旧日期交易(1年历史数据)的过程,但我仍然收到这些消息。
我检查了过程中的Aritmethic逻辑,修改了,但没有运气。有人可以为此提供帮助吗?
一堆,
解决方案
经过长时间的描述,我发现了以某种方式使我烦恼的障碍。主数据现在具有Longger字符(VARCHAR)的变化。在我的过程中,它被放入较小的varchar尺寸,假设10个字符。虽然新字符串大约15。 ...或字符串截断...。. 。但是无论如何,感谢您关注我的问题,并感谢您所写的线索,它可以为我节省,给我一个想法来追踪它。
一堆,
其他提示
具有完全相同数据的不同行为(在备份数据库中和Live One中)很奇怪。也许其他一些过程或触发器正在实时数据库中弄乱您的查询。
由于您说您不能在此处发布代码,因此我建议您可以尝试消除其他一些可能性。
“数字溢出或字符串截断。” 是您遇到的错误。
- 查询有吗
SUM()
还是其他Aggegate功能? - 它是否有任何字符串操纵功能?
如果是在上述任何一个上,请尝试一一删除任何此类部分,然后运行修改的查询。因此,您可能会发现查询的哪一部分产生错误。
注意:相同的数据库结构,相同的数据和相同的查询 不是 由于非确定性功能,总是产生相同的结果 NOW()
和 RAND()
. 。如果这些函数的结果用于进一步的计算,则可能会在一次运行中而不是在另一个运行中发生算术错误,例如除法或溢出或其他类型的错误。