数据库在删除表上被锁定异常

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

我目前面临数据库锁定异常的问题。

我有一个更新功能,比如

private void UpdateVersion(string version)
{
        string qry = "DROP TABLE IF EXISTS version; " +
                     "CREATE TABLE IF NOT EXISTS version ( version INTEGER NOT NULL );" +
                     "INSERT INTO version VALUES ("+version+");";
        try
        {
            SQLiteCommand cmd = new SQLiteCommand(qry, this.dbConnection);
            cmd.ExecuteNonQuery();
        }
        catch (SQLiteException ex)
        {
            // stuff
        }
    }

我总是得到

{"database is locked\r\ndatabase is locked"}
ErrorCode   5
ResultCode  Busy

这有点奇怪,因为相同的查询在 SQLite 浏览器(如 SQLiteStudio 或 SQLite 的 DB 浏览器)中运行没有任何问题。我发现异常是在第一个查询部分(DROP TABLE)引发的。

我的代码中的每个删除表都面临这个问题:/。

有人有想法吗? :)

c# sqlite visual-studio-2013 system.data.sqlite
2个回答
2
投票

如果您尝试删除表,而 SELECT 语句在此表上处于活动状态,则可能会出现此错误。


-1
投票

开始传输

使用 AdventureWorks

使用(UPDLOCK)从Person.Address中选择* 地址 ID 所在位置 < 2

选择资源类型、请求模式、资源描述 来自 sys.dm_tran_locks WHERE 资源类型 <> '数据库'

回滚

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