数据库是丢弃表上的锁定异常

时间:2015-04-27 12:20:34

标签: c# sqlite visual-studio-2013 system.data.sqlite

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

我有像

这样的更新功能
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或SQL浏览器的SQLite),没有任何问题。我发现在第一个查询部分(DROP TABLE)上抛出异常。

我在我的代码中的每个DROP TABLE上遇到此问题:/。

有没有人有想法? :)

2 个答案:

答案 0 :(得分:0)

如果您在此表上激活SELECT语句时尝试删除表,则可能会出现此错误。

您可以在此找到问题的原因:

http://www.sqlite.org/cvstrac/wiki?p=DatabaseIsLocked

答案 1 :(得分:-1)

BEGIN TRAN

USE AdventureWorks

SELECT * FROM Person.Address WITH(UPDLOCK) WHERE AddressId< 2

SELECT resource_type,request_mode,resource_description FROM sys.dm_tran_locks WHERE resource_type<> ' DATABASE'

ROLLBACK