禁止修改varchar到int|[运维规范]

在MySQL更改数据类型前一定要特别小心,分析一下是不是可行,另外在更改前,需要先进行备份,备份,备份!!!

一、环境描述

表结构:

写入数据:

确认数据无误:

二、溢出

修改数类型:

查看警告:

到这里实质就可以宣布,死定了。数据已溢出。

查看数据:

这里真是的男人哭吧,哭吧, … 如果是线上环境,想死的心估计大家都有了,不是简单的哭了。如果没有备份,这么重要一例数据没了,有可能意为着项目也有可能受到严重的影响。

这时也不要心存幻想在改回去就好,来看一下操作,请死心!!!

三、结论

  • 生产环境更数据类型明确提出: 不允许varchar 改成int.

  • 更改数据前一定要做好备份,无论是update,delete,或是数据类型更改。

四、操作Tips: 如保备份一列数据?

select pk , 修改的列 from tb where 条件 ;
用命令行记录也可以,用outfile处理也行。

恢复可以用awk反向生成update语句: cat bak.txt |awk ‘{print “update tb set 修改列名=“ $2,”where pk=”$1″;”}

大概这样生成,再执行恢复即可。

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">