MySQL执行ALTER TABLE修改updated_at字段属性不生效问题咨询
MySQL ALTER TABLE修改datetime字段属性未生效原因排查
你写的ALTER语句语法本身没有错误,未生效通常是以下几个原因导致:
- MySQL版本不支持datetime的ON UPDATE属性
这是最高发的原因:MySQL 5.5及更早的版本中,ON UPDATE CURRENT_TIMESTAMP特性仅支持TIMESTAMP类型,DATETIME类型不支持该配置,所以语句执行后相关配置不会生效,字段会保持原有属性。
解决方案:- 升级MySQL版本到5.6及以上
- 将字段类型改为TIMESTAMP,修改后语句如下:
ALTER TABLE billing_payment_flow MODIFY updated_at TIMESTAMP(6) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(6) - 原有字段属性和修改目标完全一致
如果当前updated_at字段的实际属性已经和你语句中声明的配置完全相同,MySQL不会执行任何变更操作,自然看不到属性变化。你可以执行以下语句确认当前字段的实际定义:SHOW CREATE TABLE billing_payment_flow; - 表名或字段名拼写错误
如果写错了表名或者字段名,修改操作会指向不存在的对象,自然不会修改目标字段的属性,需要核对拼写是否正确。 - 语句执行存在隐式错误
如果你的数据库开启了严格SQL模式,或者表中存在和NULL约束冲突的历史数据,语句可能执行失败但你未捕获到报错信息。可以检查语句执行后的返回结果,确认是否有错误提示。
内容的提问来源于stack exchange,提问作者user892134
相关产品推荐
相关产品推荐

