我目前面临数据库锁定异常的问题。
我有一个更新功能,比如
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)引发的。
我的代码中的每个删除表都面临这个问题:/。
有人有想法吗? :)
如果您尝试删除表,而 SELECT 语句在此表上处于活动状态,则可能会出现此错误。
开始传输
使用 AdventureWorks
使用(UPDLOCK)从Person.Address中选择* 地址 ID 所在位置 < 2
选择资源类型、请求模式、资源描述 来自 sys.dm_tran_locks WHERE 资源类型 <> '数据库'
回滚