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)