-
一个把数字枚举的值直接存进数据库的设计,在我往枚举中间插了一个新成员后,让所有历史订单的状态集体错位了一格:一次 TypeScript 枚举持久化的深度复盘
订单状态用 TS 数字枚举、状态值以数字存库。某次在'待支付'和'已支付'间插了个'支付中',发布后大量历史订单状态集体往后错位一格——已发货显示成已支付。根因是 TS 数字枚举不显式赋值时值从 0 自动递增、靠声明顺序决定,往中间插成员让后面所有值 +1,而数据库里历史数据存的旧数字没变、代码却用新枚举去解释,含义被悄悄换掉。本文讲透数…- 0
- 0
-
插一个枚举值搞乱历史数据:TS 数字枚举避坑
有个订单状态我们用 TypeScript 枚举表示:enum OrderStatus { Created, Paid, Shipped, Completed },然后把状态值存进数据库——存的是数字,平稳跑了大半年。直到某次迭代我要在已付款和已发货之间加一个备货中,很自然地把它插在中间,改完测试一切正常便上线。然后客服就炸了:大量用户反馈我明明已收到货订单却显示备货中、我刚下单还没付款怎么显示已发…- 0
- 0
-
MySQL 8.4 → PostgreSQL 17 异构迁移 10 天踩坑实录:15 条工程纪律与 8 套修法
从 MySQL 8.4 迁 PostgreSQL 17 切流 7 天,订单查询 P99 从 14ms 飙到 1.8 秒、库存扣减 deadlock 4200 次/分、复制延迟 35 秒、连接池打满、CDC pipeline 阻塞、Kafka offset 错乱。10 天复盘揭开 5 个反模式:pgBouncer + prepared statement 不兼容、RR→RC 事务隔离语义陷阱、aut…- 2
- 0
数据迁移
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!



