fix(master): 启用 SQLite WAL 高并发引擎与 5000ms 锁排队机制,彻底解决全舰队并发通讯时的 database is locked 报错

This commit is contained in:
hotyue
2026-04-21 06:51:49 +00:00
parent f283a8a4c6
commit bee6fef69c

View File

@@ -45,9 +45,9 @@ edit_ui() {
-d "{\"chat_id\":\"$1\",\"message_id\":\"$2\",\"text\":\"$3\",\"parse_mode\":\"Markdown\",\"reply_markup\":{\"inline_keyboard\":$4}}" > /dev/null
}
# 数据库执行函数
# 数据库执行函数 (v3.6.3 增强版: 注入 5000ms 锁排队超时防御)
db_exec() {
sqlite3 "$DB_FILE" "$1"
sqlite3 "$DB_FILE" "PRAGMA busy_timeout=5000; $1"
}
# ================== [v3.0.4 核心: 动态 HMAC 签名生成器] ==================
@@ -69,6 +69,11 @@ generate_signed_url() {
}
# ========================================================================
# ================== [v3.6.3 核心: 激活 SQLite 高并发 WAL 引擎] ==================
db_exec "PRAGMA journal_mode=WAL;" > /dev/null 2>&1
db_exec "PRAGMA synchronous=NORMAL;" > /dev/null 2>&1
# ==============================================================================
# ================== [v3.1.3-v3.6.0 核心: 数据库结构无损热升级] ==================
# 自动探测并增加缺失字段,屏蔽已存在的报错,保护老节点数据
db_exec "ALTER TABLE nodes ADD COLUMN region TEXT DEFAULT 'UNKNOWN';" 2>/dev/null