shhboy 发表于 2008-12-31 00:36:12

关于默认值自己变成NULL的问题。

我有一个表是这样的。
CREATE TABLE IF NOT EXISTS 111 (
          `id` int(10) NOT NULL auto_increment,
          `member_id` smallint(5) default NULL,
          `picture` varchar(255) default NULL,
          `fir` SMALLINT(6) NOT NULL default '0',
          `nr` SMALLINT(6) NOT NULL default '0',
          `sr` SMALLINT(6) NOT NULL default '0',
          `ar` SMALLINT(6) NOT NULL default '0',
          `frr` SMALLINT(6) NOT NULL default '0',
PRIMARY KEY(`id`)
   );
能正常创建该表,但问题在。进入NCAT后,这个表显示的所有默认值为0的字段,默认值仍然为NULL。不知道何解?

kider 发表于 2008-12-31 15:51:31

我按照你的SQL生成了一个表a111,Field显示是0,插入数据后也显示是0,我用的ems

是不是你的工具显示问题?NCAT ?

shhboy 发表于 2008-12-31 16:40:47

本帖最后由 shhboy 于 2008-12-31 16:45 编辑

恩,对,Navicat管理MYSQL的工具。不单单是这几个字段,所有not null default '0'的,用这个MYSQL管理工具进去全是NULL。到致后面的insert into语句中如果涉及到这几个字段为''的话,会提示错误。
我不得不修改语句,把所有为空的结果替换成0。如果和管理工具无关的话,那就应该是我现在安装的MYSQL的版本问题了,我现在用的是5。0。24a好像。又或者是设置上的问题?

独步古今 发表于 2009-1-23 11:30:35

把default '0'改成default 0 即可

独步古今 发表于 2009-1-23 11:37:52

当执行角本会报错时,把default '0'改成default 0。但如果不报错时,肯定是可以插入默认值的啊。

CREATE TABLE IF NOT EXISTS test (
          `id` int(10) NOT NULL auto_increment,
          `member_id` smallint(5) default NULL,
          `picture` varchar(255) default NULL,
          `fir` SMALLINT(6) NOT NULL default '0',
          `nr` SMALLINT(6) NOT NULL default '0',
          `sr` SMALLINT(6) NOT NULL default '0',
          `ar` SMALLINT(6) NOT NULL default '0',
          `frr` SMALLINT(6) NOT NULL default '0',
PRIMARY KEY(`id`)
   );

insert into test(id) values(1);
select * from test;
结果如下(完全OK的):
+----+-----------+---------+-----+----+----+----+-----+
| id | member_id | picture | fir | nr | sr | ar | frr |
+----+-----------+---------+-----+----+----+----+-----+
|1 |      NULL | NULL    |   0 |0 |0 |0 |   0 |
+----+-----------+---------+-----+----+----+----+-----+
1 row in set (0.00 sec)
页: [1]
查看完整版本: 关于默认值自己变成NULL的问题。