mysql timestamp値の不正問題

3931 ワード

Create Table: CREATE TABLE `RecruitmentDesc` (
  `sn` int(11) NOT NULL AUTO_INCREMENT COMMENT '  (    )',
  `areaSn` int(11) NOT NULL COMMENT '    ',
  `title` varchar(50) NOT NULL COMMENT '    ',
  `content` text NOT NULL COMMENT '    ',
  `status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '   1   2   ',
  `personNum` int(11) NOT NULL DEFAULT '0' COMMENT '     0-  ',
  `actionTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '    ',
  `dueTime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '    ',
  `createTime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '    ',
  `updateTime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '    ',
  PRIMARY KEY (`sn`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='     '
1 row in set (0.00 sec)


mysql> ALTER TABLE `RecruitmentDesc` MODIFY COLUMN `status` TINYINT NOT NULL DEFAULT 2 COMMENT '   1   2   ';
ERROR 1067 (42000): Invalid default value for 'dueTime'


Create Table: CREATE TABLE `RecruitmentDesc111` (
  `sn` int(11) NOT NULL AUTO_INCREMENT COMMENT '  (    )',
  `areaSn` int(11) NOT NULL COMMENT '    ',
  `title` varchar(50) NOT NULL COMMENT '    ',
  `content` text NOT NULL COMMENT '    ',
  `status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '   1   2   ',
  `personNum` int(11) NOT NULL DEFAULT '0' COMMENT '     0-  ',
  `actionTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '    ',
  `dueTime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '    ',
  `createTime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '    ',
  `updateTime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '    ',
  PRIMARY KEY (`sn`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='     


tinyint
  0   255      。      1   。

ALTER TABLE `RecruitmentDesc` MODIFY COLUMN `dueTime` timestamp  NOT NULL DEFAULT '2016-03-23 00:00:00' , MODIFY COLUMN `createTime` timestamp  NOT NULL DEFAULT '2016-03-23 00:00:00' , MODIFY COLUMN `updateTime` timestamp NOT NULL DEFAULT  '2016-03-23 00:00:00' ;




ALTER TABLE `RecruitmentDesc` MODIFY COLUMN `dueTime` timestamp  NOT NULL DEFAULT now() , MODIFY COLUMN `createTime` timestamp  NOT NULL DEFAULT now()  , MODIFY COLUMN `updateTime` timestamp NOT NULL DEFAULT  now() ;


create table test100(id TINYINT,dueTime NOT NULL DEFAULT now());

mysql> desc test100
    -> ;
+---------+------------+------+-----+-------------------+-------+
| Field   | Type       | Null | Key | Default           | Extra |
+---------+------------+------+-----+-------------------+-------+
| id      | tinyint(4) | YES  |     | NULL              |       |
| dueTime | timestamp  | NO   |     | CURRENT_TIMESTAMP |       |
+---------+------------+------+-----+-------------------+-------+
2 rows in set (0.00 sec)

mysql> select * from test100;
Empty set (0.00 sec)


mysql> insert into test100 values(1, default);
Query OK, 1 row affected (0.03 sec)

mysql> select * from test100;
+------+---------------------+
| id   | dueTime             |
+------+---------------------+
|    1 | 2016-03-23 17:37:19 |
+------+---------------------+
1 row in set (0.00 sec)




mysql> insert into test100(id) values(20);
Query OK, 1 row affected (0.01 sec)



mysql> select * from test00;
ERROR 1146 (42S02): Table 'zjzc.test00' doesn't exist
mysql> select * from test100;
+------+---------------------+
| id   | dueTime             |
+------+---------------------+
|    1 | 2016-03-23 17:37:19 |
|   20 | 2016-03-23 17:38:24 |
+------+---------------------+
2 rows in set (0.00 sec)