MariaDB社区

标题: 关于默认值自己变成NULL的问题。 [打印本页]

作者: shhboy    时间: 2008-12-31 00:36
标题: 关于默认值自己变成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
我按照你的SQL生成了一个表a111,Field显示是0,插入数据后也显示是0,我用的ems

是不是你的工具显示问题?NCAT ?
作者: shhboy    时间: 2008-12-31 16:40
本帖最后由 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
把default '0'改成default 0 即可
作者: 独步古今    时间: 2009-1-23 11:37
当执行角本会报错时,把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)




欢迎光临 MariaDB社区 (http://123.56.88.72/) Powered by Discuz! X3.2