mysql 关于CHAR设置为NOT NULL时的默认值

dm7nw8vv  于 2023-04-19  发布在  Mysql
关注(0)|答案(1)|浏览(251)

我正在创建一个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
fruv7luv

fruv7luv1#

CHAR等价于CHAR(1)。当32转换为字符串'32'时,它不适合1个字符的字符串。
看起来你是想用字符的ASCII码来指定默认值。这不是数字转换成字符串的方式。从ASCII码中获取字符串需要调用CHAR()函数,但你不能在DEFAULT子句中调用函数(除了一些例外,如CURRENT_TIMESTAMP())。
所以你需要把默认值写成字符串。

CREATE TABLE `student` (
   `student_id` INT NOT NULL DEFAULT 12,
   `student_name` VARCHAR(255) NOT NULL DEFAULT '\d',
   `password` CHAR NOT NULL DEFAULT ' ',
   PRIMARY KEY (`student_id`)
)

相关问题