为了账号安全,请及时绑定邮箱和手机立即绑定

老师,我定义了用户的性别`sex` enum("男","女","保密")not null default"保密",,为什么写入数据库时一直提示ERROR 1067 (42000): Invalid default value for 'sex' 无效的啊?。是不是要取消保密啊

正在回答

6 回答

是你字符集的事,你看看你的编码方式,临时转换客户端的编码方式SET NAMES GBK,之后status看看数据库的编码方式是不是两个utf8,两个gbk

^-^...

1 回复 有任何疑惑可以回复我~
#1

akang007

老师你说的不行啊
2015-05-28 回复 有任何疑惑可以回复我~

 这个这样写就可以了,望采纳


-- User table
DROP TABLE IF EXISTS `imooc_user`;
CREATE TABLE `imooc_user`(
 `id` INT UNSIGNED AUTO_INCREMENT KEY ,
 `username` VARCHAR(20) NOT NULL UNIQUE ,
 `password` CHAR(32) NOT NULL ,
 `sex` ENUM('男','女','保密') NOT NULL DEFAULT '保密',
 `face` VARCHAR(50) NOT NULL ,
 `regTime` INT UNSIGNED NOT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

1 回复 有任何疑惑可以回复我~

设置表的字符集字符集与你的库字符集一致  我的代码如下:

mysql> create table test(

    -> id int  auto_increment key,

    -> name varchar(60) not null,

    -> age  tinyint not null default 18,

    -> sex enum("男","女") not null default '男'

    -> );

ERROR 1067 (42000): Invalid default value for 'sex'

mysql> create table test(

    -> id int  auto_increment key,

    -> name varchar(60) not null,

    -> age  tinyint not null default 18,

    -> sex enum("男","女") not null default '男'

    -> ) charset='utf8';

Query OK, 0 rows affected (0.38 sec)


10 回复 有任何疑惑可以回复我~
#1

aiecho

果然要这样,但是不知道为什么,之前设置过set names gbk;
2016-08-28 回复 有任何疑惑可以回复我~

create table imooc_user(
id int unsigned auto_increment key,
username varchar(20) not null unique,
password char(32) not null,
sex enum("保密","男","女") not null,
face varchar(50) not null,
regTime int unsigned not null
);   我只能这样写了

0 回复 有任何疑惑可以回复我~

我也遇到这个问题 

0 回复 有任何疑惑可以回复我~

同学 请问这个问题解决没有

0 回复 有任何疑惑可以回复我~
#1

一路向北91

解决了
2015-06-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
手把手教你实现电商网站后台开发
  • 参与学习       117283    人
  • 解答问题       1999    个

手把手教你用PHP搭建电子商务平台,由浅入深教你搭建电商系统

进入课程
意见反馈 帮助中心 APP下载
官方微信