Firebird ISC错误代码:335544721

时间:2016-03-14 04:24:34

标签: delphi firebird

我们的客户最近报告了这个错误,我们也不知道如何解决这个问题。我们使用Delphi XE6开发我们的应用程序,它连接到Firebird(v2.5)数据库作为后端。我们还使用IBObjects在Delphi中使用Firebird数据库。 我们设法通过在运行查询之前停止Firebird窗口服务来复制开发机器上的错误,但我们还没有找到一种方法来检测代码中丢失的连接(例如,通过举办活动),因此我们不会# 39;不知道何时发生这种情况,所以我们无法重新连接到代码中的数据库。

顺便说一句,如果有帮助,这是完整的错误消息:

ISC错误代码:335544721 ISC错误消息: 无法完成主机的网络请求" BON-VFS-01"。 将数据写入连接时出错。

任何帮助都非常感激。

3 个答案:

答案 0 :(得分:1)

来自IBOBjects FAQ

  

有没有办法检测丢失的连接并尝试重新连接   自动,无需用户操作?

     

挂钩OnError事件并查找表示a的ERRCODE   失去了连接。然后,您可以采取您认为必要的任何行动   处理这个问题。如果连接丢失,你需要做一个   断开然后重新连接。

来自IBObjects的一个基本成员:

  

然而,也许你缺少的“东西”是,如果   连接被外部原因破坏,客户端应用程序具有   没办法知道它还没有连接。它的第一个知识   这个事实将在下次尝试访问服务器时出现。该   API将报告“连接丢失到数据库”并返回GDSCODE   335544741,由常量标识   isc_lost_db_connection。

     

发生此异常时,TIB_Connection仍然存在   认为它是连接的 - Connected属性将是真实的。如果你   尝试通过调用Connect重新连接,您将获得IBO异常。   有必要调用Disconnect。这不仅仅是重置一个   属性。 Disconnect方法执行所有必要的清理   使已损坏的交易无效并取消任何现在无效的交易   发布,数据集和缓存。一旦Disconnect完成了它   然后,您可以在重试循环中放置一个Connect调用   试图再次前进。

     

我不知道一个有效的例子,但是最简单的处理方式   这是您可以编写RestoreConnection处理程序过程   参数ERRCODE时,从您的IB_Session.OnError处理程序调用   返回isc_lost_db_connection。

     

让RestoreConnection程序执行您需要执行的操作,   试图调用Connect并处理发生的异常   请求失败,直到没有异常发生。测试Connected属性   每次迭代后。当Connected终于为True时,你就在   商业。您可以退出重试代码并通知用户   连接已经恢复 - 可能是声音和/或   状态栏中的消息,以避免必须显示一个对话框   她必须回应。 (如果你喜欢声音和状态栏的想法   提示,您可以设计“连接丢失”警告声音和状态栏   消息代码在处理程序过程的开头运行为   井...)

     

如果经常发生这些断开连接,您可能会喜欢   考虑制作一个可以显示的独特自定义光标   您的过程正在运行,并将重试代码括在一个   非屈服的BeginBusy ...启用了UseCursor的EndBusy块和   BusyCursor设置为使用此特殊光标图像。

     

如果重新建立连接可能需要很长时间,或者   暂时不可能,你需要提供这种能力   供用户介入并选择不继续尝试。您可以使用   这个会话计时器,将你的“忙”块封闭在里面   另一个迭代块提示用户“取消”或“保持   尝试“,以合理的间隔。

Source

答案 1 :(得分:0)

检查查询长度

最大查询长度为8191个字符UTF-8

它解决了我的问题

答案 2 :(得分:0)

将您的电脑连接到互联网,问题将得到解决,但是我不知道它是如何工作的