Firebird 更新声明冻结

问题描述 投票:0回答:1

经过一天多的查找和尝试解决问题后,是时候在这里提问了。

我们使用 Firebird 多年(大约 6 年),当前版本 2.5.2 很久以前更新,我们遇到了无法更新语句的问题。

SQL 语句也可以,即使“where”条件与主键一起使用。

问题:点击执行后更新卡住了
a) 从 PHP 脚本返回内部服务器错误 500
b) 直接来自 FlameRobin 或 IBQ 它冻结并且根本没有响应

  1. 不工作的 SQL 在清理 Firebird(停止和启动)后立即工作,但一段时间后它再次卡住
  2. 选择没问题,问题仅在于更新
  3. 我做了如何分析和修复损坏的数据库中描述的所有内容(重新转储数据库文件,这在
    gfix -v -full
    上给了我错误),重新转储后没有错误,但问题仍然出现
  4. 我们有更多的服务器运行相同的配置和更多的数据库文件,但这种情况仅发生在一台服务器上的一个数据库文件中的一张表上。

经过一番调查,我终于从 fbtrace 得到了这个:

2016-11-28T14:25:28.4410 (9473:0x7f1489cb1f08) PREPARE_STATEMENT
    phones.fdb (ATT_273856, VILAS:NONE, UTF8, TCPv4:10.1.1.195)
    /usr/bin/flamerobin:10868
        (TRA_78838, CONCURRENCY | WAIT | READ_WRITE)

Statement 422749:
-------------------------------------------------------------------------------
UPDATE TELEFONI_CISLA SET DATUM_PRIDANI = '2011-7-3' WHERE ID = '17274'
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PLAN (TELEFONI_CISLA INDEX (RDB$PRIMARY4))
      0 ms

2016-11-28T14:25:28.4780 (9473:0x7f1489cb1f08) EXECUTE_STATEMENT_START
    phones.fdb (ATT_273856, VILAS:NONE, UTF8, TCPv4:10.1.1.195)
    /usr/bin/flamerobin:10868
        (TRA_78838, CONCURRENCY | WAIT | READ_WRITE)

Statement 422749:
-------------------------------------------------------------------------------
UPDATE TELEFONI_CISLA SET DATUM_PRIDANI = '2011-7-3' WHERE ID = '17274'
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PLAN (TELEFONI_CISLA INDEX (RDB$PRIMARY4))

我不知道该检查什么,几乎迷失了。只是想让您知道我们没有更改 FB 或服务器配置中的任何内容。

firebird firebird2.5
1个回答
0
投票

一切都是由在后台运行的许多脚本之一(来自 cron)引起的,该脚本在几个小时内没有提交就进行了开放事务。 回来就好了。

© www.soinside.com 2019 - 2024. All rights reserved.