如果在一个表中的任何列有可变长度,结果是整个行是变长的。因此,如果一张表包含任何变长的列(VARCHAR、TEXT或BLOB),所有大于3个字符的CHAR列被改变为VARCHAR列。这在任何方面都不影响你如何使用列!MySQL实施这种改变,是因为它节省空间并且使表操作更快捷!MySQL4.0版本是比较稳定的!(包括InnoDB)

解决方案 »

  1.   

    我使用InnoDB还没有发现有什么不稳定的情况出现。
      

  2.   

    我又有问题了。
    create table if not exists Accounts
    (
       AccountID                      char(10)                       not null,
       ActorID                        char(5)                        not null,
       Account                        varchar(20)                    not null,
       Passwd                         varchar(12)                    not null,
       UserType                       varchar(20)                    not null,
       LinkMan                        varchar(20)                    not null,
       Phone                          varchar(50)                    not null,
       Email                          varchar(50)                    not null,
       AcntStatus                     int                            not null,
       RegDate                        datetime                       not null,
       primary key (AccountID)
    );
    建个一个表,结果为什么ActorID和Account都不检验空呢。不输入都可以通过。
    哪个来帮我看看撒。
      

  3.   

    不知道是我服务器问题吗,结果后来除了Primary Key以外的都可以不输入了。我无语。真的不知道怎么回事了。还是我用的客户端软件有问题。
    create table if not exists Accounts
    (
       AccountID                      char(10)                       not null,
       ActorID                        char(5)                        not null,
       Account                        varchar(20)                    not null,
       Passwd                         varchar(12)                    not null,
       UserType                       varchar(20)                    not null,
       LinkMan                        varchar(20)                    not null,
       Phone                          varchar(50)                    not null,
       Email                          varchar(50)                    not null,
       AcntStatus                     int                            not null,
       RegDate                        datetime                       not null,
       primary key (AccountID),
     key(Account)
    );
      

  4.   

    MySQL 本身就这样, 若不赋值,系统就赋于默认值
      

  5.   

    每种字段类型都有默认的缺省值!例如:
    VARCHAR  ''
    DATE     '0000-00-00'
    ...
    not null只是保证记录中该字段不会是NULL
      

  6.   

    关键是我没有定默认值,而且有时候能限制输入,有时候又不行,我不知道是怎么回事。我用的myAdmin来输入的。
      

  7.   

    哦,偶有点点知道了,那VARCHAR的'' 和 null 是不同的概念, 那VARCHAR的not null 有什么意义呢? 偶就是要限定 VARCHAR 有值撒。 也就是不为''和Null。  能不能限定不为''.如果不行那只有在网页中检验了。
      

  8.   

    呵呵,是的,mysql本身无法限定字段不能为'',以及其它一切除NULL以外的合理值!另,''和null, 0和null 都是不同的概念!关于mysql中的null请参考手册以得到更多的信息!