You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 5.7中CHAR类型非空默认值设置报错问题咨询

MySQL 5.7中设置password字段默认值报错的原因及解决办法

核心原因

password是MySQL 5.7的保留关键字,当你直接用它作为字段名并设置默认值时,MySQL会错误地将其解析为内置的PASSWORD()加密函数,而非普通字段名,导致默认值32的配置被判定为非法,触发1067 - Invalid default value for 'password'错误。

另外,如果你的password字段是字符串类型(比如VARCHAR),直接写DEFAULT 32(不加单引号),在MySQL 5.7默认开启的严格SQL模式下,这种隐式类型转换会被拦截,进一步放大错误,但关键字冲突才是根本问题。

解决办法

  • 给字段名添加反引号,强制MySQL将其识别为普通字段:
    CREATE TABLE student (
        id INT PRIMARY KEY AUTO_INCREMENT,
        `password` VARCHAR(255) DEFAULT '32' -- 字符串类型默认值需加单引号,数字类型可省略
    );
    
  • 更换字段名,避开保留关键字,比如改用user_password,无需额外处理即可正常设置默认值:
    CREATE TABLE student (
        id INT PRIMARY KEY AUTO_INCREMENT,
        user_password VARCHAR(255) DEFAULT '32'
    );
    
  • (不推荐)临时关闭严格SQL模式:执行SET sql_mode = 'NO_ENGINE_SUBSTITUTION';,但这会降低数据校验的严谨性,容易引发其他数据问题,不建议长期使用。

内容的提问来源于stack exchange,提问作者Nano HE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 08:57:11