修复数据库创建代码的过时字段,增强数据库初始化错误处理

This commit is contained in:
tian 2026-01-28 12:41:29 +08:00
parent d5cf6b2f8b
commit b99d4e82b6
3 changed files with 30 additions and 5 deletions

View File

@ -490,14 +490,39 @@ namespace NavisworksTransport
// 文档加载完成初始化PathDatabase
if (!string.IsNullOrEmpty(activeDoc?.FileName))
{
GlobalExceptionHandler.SafeExecute(() =>
try
{
var pathManager = PathPlanningManager.GetActivePathManager();
if (pathManager != null)
{
pathManager.DatabaseInitialize();
}
}, "初始化PathDatabase");
}
catch (Exception ex)
{
// 数据库初始化失败是严重错误,需要明确提示用户
var errorMsg = $"数据库初始化失败:{ex.Message}\n\n";
errorMsg += "可能的原因:\n";
errorMsg += "1. 文件夹权限不足\n";
errorMsg += "2. 磁盘空间不足\n";
errorMsg += "3. 数据库文件被锁定\n";
errorMsg += "4. SQLite 组件损坏\n\n";
errorMsg += "详细信息请查看日志文件。";
LogManager.Error($"[文档管理] 数据库初始化失败: {ex.Message}", ex);
LogManager.Error($"[文档管理] 文档路径: {activeDoc.FileName}");
LogManager.Error($"[文档管理] 异常类型: {ex.GetType().Name}");
LogManager.Error($"[文档管理] 堆栈信息: {ex.StackTrace}");
System.Windows.MessageBox.Show(
errorMsg,
"数据库初始化失败",
System.Windows.MessageBoxButton.OK,
System.Windows.MessageBoxImage.Error
);
// 不重新抛出,避免插件崩溃,但批处理等功能将不可用
}
}
}
else if (_hasModels && !currentHasModels)

View File

@ -231,9 +231,6 @@ namespace NavisworksTransport
VirtualVehicleLength REAL,
VirtualVehicleWidth REAL,
VirtualVehicleHeight REAL,
VehicleModelIndex INTEGER,
VehiclePathId TEXT,
VehicleObjectName TEXT,
DetectAllObjects INTEGER NOT NULL DEFAULT 1,
ClashDetectiveTestName TEXT,
CollisionCount INTEGER,

View File

@ -191,6 +191,9 @@ namespace NavisworksTransport
catch (Exception ex)
{
LogManager.Error($"初始化路径分析数据库失败: {ex.Message}", ex);
LogManager.Error($"数据库路径: {Application.ActiveDocument?.FileName}");
LogManager.Error($"异常类型: {ex.GetType().Name}");
throw; // 重新抛出异常,让调用者知道初始化失败
}
}