近在做一次 MySQL 迁 PG 的项目,晚上实施时犯了小错误,在对一个小表数据修改类型时,操作失误,还好开发人员发现及时,没对业务产生严重影响,后来在测试库上做了下测试,重现了整个过程,具体如下:
1 创建测试表
1 |
CREATE TABLE ad_tmp ( |
备注:创建表之后,插入了 200 多条数据,数据插入步骤略。
2 查看表数据
1 |
mydb=> select count(*) from ad_tmp; |
3 更改表结构类型 ( character varying(20) –> smallint )
1 |
mydb=> alter table ad_tmp alter column config type smallint using platform::smallint; |
4 字段类型修改后,核实数据
1 |
mydb=> select distinct config from ad_tmp; |
备注: 字段 config 的类型由 character varying(20) 更改成 smallint 后,发现数据居然诡异都变成 3 了,细心的朋友可能已经发现这异常原因了,原因很简单,这里就不说明了。可以说是一次低级失误吧,今天记录下。
5 总结
- 生产库上的操作一定要谨慎,不管什么时候;
- 晚上数据库维护的脚本一定要仔细检查,包括每一步;
- 如果有临时情况发生需要修改脚本的地方,也需要仔细检查,切莫因为粗心影响整个项目实施。
原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/237825.html