IndexedDB 通过整数版本号和 upgradeneeded 事件实现可靠 schema 迁移版本必须递增、迁移逻辑须幂等且仅在该事件中执行Web SQL 已废弃不应使用。HTML5 的 Web SQL Database已废弃和 IndexedDB 都不直接提供“数据库版本号管理”的自动机制所谓“版本混乱”本质是开发者对 schema 迁移逻辑缺失或随意处理 导致的。真正需要规范的是迁移过程本身而非版本号格式。用显式 upgradeNeeded 事件驱动 schema 变更IndexedDB 的 open() 方法第二个参数为 version但仅当传入值 当前数据库版本时才触发 upgradeneeded 事件——这是唯一安全执行结构变更的时机。永远不要在 success 或 error 回调中手动创建/删除 objectStore 所有表结构增删、索引添加、字段迁移都必须写在 upgradeneeded 处理函数内 若需从 v1 升级到 v3且用户当前是 v1则该事件会依次触发 v1→v2、v2→v3 的完整升级路径只要代码里按顺序判断并执行版本号采用递增整数禁止跳变或回退IndexedDB 内部只接受非负整数作为版本语义上代表 schema 的演进序号不是语义化版本如 1.2.0。初始打开用 indexedDB.open(mydb, 1)后续每次结构变更都 1 避免使用 Date 时间戳、哈希值或随机数作版本号——它们无法表达先后依赖关系 若团队协作建议在项目文档中维护一张 version → change log 映射表例如v1用户表v2增加订单表外键模拟v3添加订单状态索引迁移逻辑必须幂等且可中断恢复用户可能在升级中途刷新页面或设备断电。因此每个版本的升级步骤应具备“重复执行不报错、不丢数据”特性。 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手依托大模型帮助用户记录、整理和分析音视频内容体验用大模型做音视频笔记、整理会议记录。