我正在创建一个sql脚本,用navicat运行,而删除DEFAULT 32时,运行良好。为什么?谢谢。
- 我的开发环境:MySQL 5.7安装在win11上。*
CREATE TABLE `student` (
`student_id` INT NOT NULL DEFAULT 12,
`studeng_name` VARCHAR(255) NOT NULL DEFAULT 4,
`password` CHAR NOT NULL DEFAULT 32,
PRIMARY KEY (`student_id`)
)
> 1067 - Invalid default value for 'password'
> Time: 0.001s
1条答案
按热度按时间fruv7luv1#
CHAR
等价于CHAR(1)
。当32
转换为字符串'32'
时,它不适合1个字符的字符串。看起来你是想用字符的ASCII码来指定默认值。这不是数字转换成字符串的方式。从ASCII码中获取字符串需要调用
CHAR()
函数,但你不能在DEFAULT
子句中调用函数(除了一些例外,如CURRENT_TIMESTAMP()
)。所以你需要把默认值写成字符串。