【问题标题】:Visual Foxpro "File in use" using "Use Exclusive"使用“独占使用”的 Visual Foxpro“正在使用的文件”
【发布时间】:2018-06-20 05:04:16
【问题描述】:

我正在 Visual Foxpro 8.0 中编写删除/打包例程。

当“Use”语句使用“Exclusive”时运行以下代码时,我得到“File in use”:

    USE dbbudget_log EXCLUSIVE
    DELETE ALL 
    pack
    use
    SET SAFETY ON 

我什至尝试过 SET EXCLUSIVE ON/OFF,但仍然出现“文件正在使用”错误。

有消除错误的建议吗?

最好的问候, 尼克

【问题讨论】:

  • 要么您已经打开了表并且现在正尝试打开 EXCL,或者您组织中的其他人已经打开了表。检查您的代码和/或与其他用户核对。此外,当您可以执行 ZAP 时,您无需执行 DELETE ALL 后跟 PACK。
  • 检查您的代码是否在使用过程中使用 FLOCK() 锁定表 - 无论是您自己还是其他用户。这将导致“文件正在使用”类型的错误。
  • 感谢 Dhugalmac。那么我需要做独占才能使用zap吗?我每年只在维护期间这样做一次。
  • 是的,像 DELETE ALL + PACK 这样的 ZAP 需要独占使用数据表。

标签: visual-foxpro


【解决方案1】:

这意味着该文件已在另一个会话中使用。该会话可能属于尝试独占使用的用户或网络上的其他人。 此外, use ... EXCLUSIVE 不保证文件是独占使用的(如果它已经在共享模式下打开,那么它会继续在共享模式下使用并且不会引发错误)。 您可以针对这两种情况进行防御性编码:

local llHadError
On error m.llHadError = .T.
select 0
use dbbudget_log exclusive
zap
use
on error
* if m.llHadError && something went wrong
* ....
* endif

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    相关资源
    最近更新 更多