【问题标题】:Delphi +Firedac and network connection errorDelphi +Firedac和网络连接错误
【发布时间】:2017-01-24 16:51:43
【问题描述】:

我的应用正在使用 MySQL 数据库,我正在使用 FireDAC 组件进行连接。上次我遇到网络问题时,我对其进行了测试,看起来(有时)它丢失了 4 个 ping 请求。我的应用程序返回错误:“[FireDAC][Phys][MySQL] 在查询期间丢失与 MySQL 服务器的连接”。现在的问题是:将 fdconnection.TFDUpdateOptions.LockWait 设置为 true(默认为 false)将解决我的问题还是产生新问题?

【问题讨论】:

    标签: mysql delphi firedac


    【解决方案1】:

    TFDUpdateOptions.LockWait 对您与数据库的连接没有影响。它决定了当无法立即获得记录锁时会发生什么。 documentation 说得很清楚:

    使用 LockWait 属性来控制 FireDAC 是否应该在获取悲观锁时等待 (True),或者如果记录已被锁定,则立即返回错误 (False)。默认值为 False。

    仅当 LockMode = lmPessimistic 时才使用 LockWait 属性。

    如果FireDAC 失去连接,它就迫不及待地想要获得锁,因为显然无法请求锁或确定是否获得了锁。因此,更改LockWait 不会改变丢失连接的问题,并且可能会减慢许多针对数据的其他操作。

    丢失 ping 请求的唯一解决方案是修复网络连接,使其停止丢包。简单地随机更改 TFDConnection 上的选项并不能解决网络问题。

    【讨论】:

    • 我很惊讶 - 它奏效了。现在,当连接恢复时,应用程序不再“挂起”
    猜你喜欢
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 2021-12-10
    • 1970-01-01
    相关资源
    最近更新 更多