mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-10-09 22:00:01 +08:00
🐛 fix(db): 优化多数据库脚本兼容性与初始化错误处理 (#2095)
* 🐛 fix(db): 优化多数据库脚本兼容性与初始化错误处理 - 为 `BotConsole`、`GroupConsole` 和 `GroupInfo` 模型增加针对 PostgreSQL 和 MySQL 的字段类型转换脚本 - 统一将插件和任务相关的禁用/可用字段类型修改为 `TEXT` - 优化数据库初始化逻辑,增加对 `OperationalError` 的细粒度处理,忽略常见的重复执行错误 - 简化 `db_context` 内部配置解析逻辑 * 🚨 auto fix by pre-commit hooks --------- Co-authored-by: webjoin111 <455457521@qq.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: HibiKier <45528451+HibiKier@users.noreply.github.com>
This commit is contained in:
co-authored by
webjoin111
pre-commit-ci[bot]
HibiKier
parent
4f152638b0
commit
b95acce800
@@ -2,6 +2,7 @@ from typing import Literal, overload
|
||||
|
||||
from tortoise import fields
|
||||
|
||||
from zhenxun.configs.config import BotConfig
|
||||
from zhenxun.services.cache.runtime_cache import BotMemoryCache
|
||||
from zhenxun.services.db_context import Model
|
||||
from zhenxun.utils.enum import CacheType
|
||||
@@ -469,9 +470,32 @@ class BotConsole(Model):
|
||||
|
||||
@classmethod
|
||||
async def _run_script(cls):
|
||||
return [
|
||||
db_type = (BotConfig.get_sql_type() or "").lower()
|
||||
|
||||
scripts = [
|
||||
"ALTER TABLE bot_console RENAME COLUMN block_plugin TO block_plugins;",
|
||||
"ALTER TABLE bot_console RENAME COLUMN block_task TO block_tasks;",
|
||||
"ALTER TABLE bot_console ADD available_plugins text default '';",
|
||||
"ALTER TABLE bot_console ADD available_tasks text default '';",
|
||||
]
|
||||
|
||||
if "postgres" in db_type:
|
||||
scripts.extend(
|
||||
[
|
||||
"ALTER TABLE bot_console ALTER COLUMN block_plugins TYPE TEXT;",
|
||||
"ALTER TABLE bot_console ALTER COLUMN block_tasks TYPE TEXT;",
|
||||
"ALTER TABLE bot_console ALTER COLUMN available_plugins TYPE TEXT;",
|
||||
"ALTER TABLE bot_console ALTER COLUMN available_tasks TYPE TEXT;",
|
||||
]
|
||||
)
|
||||
elif "mysql" in db_type:
|
||||
scripts.extend(
|
||||
[
|
||||
"ALTER TABLE bot_console MODIFY COLUMN block_plugins TEXT;",
|
||||
"ALTER TABLE bot_console MODIFY COLUMN block_tasks TEXT;",
|
||||
"ALTER TABLE bot_console MODIFY COLUMN available_plugins TEXT;",
|
||||
"ALTER TABLE bot_console MODIFY COLUMN available_tasks TEXT;",
|
||||
]
|
||||
)
|
||||
|
||||
return scripts
|
||||
|
||||
Reference in New Issue
Block a user