新加的字段一定要允许为空
正常情况下,如果程序新加了字段,一般是先在数据库中加字段,然后再发程序的最新代码。
因为如果先发程序,然后在数据库中加字段。在该程序刚部署成功,但数据库新字段还没来得及加的这段时间内,最新程序中,所有使用了新加字段的增删改查sql都会报字段不存在的异常。
如果数据库中新加的字段非空,最新的程序还没发,线上跑的还是老代码,这时如果有insert操作,就会报字段不能为空的异常。 因为新加的非空字段,老代码是没法赋值的。
所以说新加的字段一定要允许为空。
不允许删除字段
删除字段是不允许的,特别是必填字段一定不能删除。
假设开发人员已经把程序改成不使用删除字段了,接下来如何部署呢?
如果先把程序部署好了,还没来得及删除数据库相关表字段。当有insert请求时,由于数据库中该字段是必填的,会报必填字段不能为空的异常。
如果先把数据库中相关表字段删了,程序还没来得及发。这时所有涉及该删除字段的增删改查,都会报字段不存在的异常。
所以,线上环境必填字段一定不能删除的。
根据实际情况修改字段
修改字段要分为这三种情况:
1.修改字段名称
修改字段名称也不允许,跟删除必填字段的问题差不多。
如果把程序部署好了,还没来得及修改数据库中表字段名称。这时所有涉及该字段的增删改查,都会报字段不存在的异常。
如果先把数据库中字段名称改了,程序还没来得及发。这时所有涉及该字段的增删改查,同样也会报字段不存在的异常。
所以,线上环境字段名称一定不要修改。
2.修改字段类型
修改字段类型时一定要兼容之前的数据。例如:
tinyint改成int可以,但int改成tinyint要仔细衡量一下。
varchar改成text可以,但text改成varchar要仔细衡量一下。
3.修改字段长度
字段长度建议改大,通常情况下,不建议改小。如果一定要改小,要先确认该字段可能会出现的最大长度,避免insert操作时出现字段太长的异常。
此外,建议改大也需要设置一个合理的长度,避免数据库资源浪费。