换个角度想
Migration 像装修的变更单:每次改水电都开一张编号单据,哪套房子(环境)施工到第几号一目了然。口头喊师傅「顺手改一下」,改过什么、别的房子改没改,事后谁都说不清。
术语 · 数据与存储
Migration
以可追踪的方式修改数据库结构,并让不同环境保持一致。
结构改动,写成带版本的脚本
Migration 像装修的变更单:每次改水电都开一张编号单据,哪套房子(环境)施工到第几号一目了然。口头喊师傅「顺手改一下」,改过什么、别的房子改没改,事后谁都说不清。
功能支持手机号登录
前提users 表加 phone 列
打开数据库控制台,手动 ALTER TABLE
敲完就完了,没留任何记录
up给 users 加 phone 列
down删掉 phone 列(回退用)
只有你连的那个库变了
本地 ✓ · 测试 ✗ · 同事本地 ✗
测试环境✓ 已跑到 003
生产环境✓ 已跑到 003
结构需要变化
「本地能跑、线上报错」的结构漂移,靠迁移按序执行来杜绝。
同事拉取代码后跑一下迁移,数据库就追平了,不用口头交代。
每次结构改动都有编号、说明和时间,出问题能定位到某一号。
AI 直接连上数据库,帮你把一个列改了名。功能一切正常,这样做的隐患是什么?
这次改动没留下任何脚本:测试环境、同事的本地库都不知道这回事,下次部署两边就对不上;出问题也没有回退依据。应该让 AI 把改动写成迁移脚本,再由各环境按序执行。
迁移改的是真实数据的结构,删列、改类型可能造成数据丢失。生产环境执行前要有备份,破坏性改动先在测试环境演练一遍。