Firebird更新声明冻结

时间:2016-11-28 14:08:38

标签: firebird firebird2.5

经过一天多的发现&试图解决问题的时间问这里。

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

SQL语句没问题,甚至“where”条件与主键一起使用。

问题:点击后更新将停止:执行
a)从php脚本返回内部服务器错误500
b)直接从Flamerobin或IBQ冻结而根本没有响应

  1. 提示:没有工作的SQL正在干净的firebird(停止和启动)后工作,但过了一段时间它会再次卡住
  2. 提示:选择是或者,问题仅在于UPDATE
  3. 提示:我在这里做了所有描述https://www.ibphoenix.com/resources/documents/how_to/doc_5 (在gfix -v -full上给我错误的数据库文件的减少) 在减少之后没有出现错误但出现问题
  4. 提示:我们有更多的服务器使用更多的数据库文件运行相同的配置,但这只发生在一台服务器上的一个数据库文件中的一个表。
  5. 经过一番调查后,我终于从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或服务器配置中的任何内容。

    感谢您提供任何有用的帮助。

1 个答案:

答案 0 :(得分:0)

所有内容都是由后台运行的许多脚本之一(来自cron)引发开放事务而不提交几个小时引起的。 再好了。