我在student_management下创建这样一个表:
create table teacher_info
(tea_id int primary key,name varchar(8),
sex varchar(4) check(sex='男' or sex='女'),
join_time date,
nationality varchar(8) default '汉族'
);
但是结果报错了:ERROR 1067 (42000) Invalid default value for 'nationality'
然后我把:'汉族'改成'hanzu'就不会报错了。顺便再问一个问题:比如之前配置数据库的时候我用的是别的字符集,现在想改成utf-8的字符集要怎么改啊?小白啊……希望大大们帮我解答一下以上两个问题,谢谢了!!!

解决方案 »

  1.   

    CREATE TABLE teacher_info
    (tea_id INT PRIMARY KEY,NAME VARCHAR(8),
    sex ENUM('男','女'),
    join_time DATE,
    nationality VARCHAR(8) DEFAULT '汉族'
    );
      

  2.   

    你看的是什么教程?
    MYSQL的语法和SQL SERVER并不相同,在开始MYSQL之前,可以参考一下MYSQL官方文档的教程部分。
      

  3.   

    检查是什么书,MYSQL目前不支持CHECK,用ENUM
      

  4.   

    注意你的字符集设置,改为如下即可,但CHECK是不会起作用的。mysql> create table teacher_info
        -> (tea_id int primary key,name varchar(8),
        -> sex varchar(4) check(sex='男' or sex='女'),
        -> join_time date,
        -> nationality varchar(8) default '汉族'
        -> ) charset='gbk';
    Query OK, 0 rows affected (0.33 sec)mysql>
      

  5.   

    http://wenku.baidu.com/view/0ca0321ca300a6c30c229fcd.html我看的教程在这里,步骤二后面一点就是了
      

  6.   

    mysql> CREATE TABLE teacher4_info
        -> (tea_id INT PRIMARY KEY,name VARCHAR(8),
        -> sex VARCHAR(4) check(sex='男' or sex='女'),
        -> join_time DATE,
        -> nationality VARCHAR(8) DEFAULT '汉族'
        -> );
    Query OK, 0 rows affected (0.09 sec)
    那为什么这样有失没错的,也没有设置字符集啊
      

  7.   

    在MY。INI中应该有设置,查找default-character-set
      

  8.   

    CREATE TABLE teacher_info
    (tea_id INT PRIMARY KEY,NAME VARCHAR(8),
    sex ENUM('男','女'),
    join_time DATE,
    nationality VARCHAR(8)  UNICODE DEFAULT '汉族'
    );
      

  9.   

    CREATE TABLE teacher_info
    (tea_id INT PRIMARY KEY,
    NAME VARCHAR(8) UNICODE ,
    sex ENUM('男','女'),
    join_time DATE,
    nationality VARCHAR(8) UNICODE DEFAULT '汉族'
    );
      

  10.   


    你可以先了解一下字符集的设置。
    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码