[Err] [Dtf] 1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_T
***今天在用Navicat运行数据库时出错了,主要原因是MySql 5.5和MySql 5.7(我用的5.7)之后版本的区别:5.5 只能有一个Timestamp,将其中一列类型改为datetime类型就可以解决。
代码如下:
DROP TABLE IF EXISTS `Order_`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `Order_` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`orderCode` varchar(255) DEFAULT NULL,
`address` varchar(255) DEFAULT NULL,
`post` varchar(255) DEFAULT NULL,
`receiver` varchar(255) DEFAULT NULL,
`mobile` varchar(255) DEFAULT NULL,
`userMessage` varchar(255) DEFAULT NULL,
`createDate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`payDate` timestamp NOT NULL ***DEFAULT CURRENT_TIMESTAMP***,
`deliveryDate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`confirmDate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`uid` int(11) NOT NULL,
`status` varchar(255) DEFAULT 'waitConfirm',
`total` float DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `fk_order_user` (`uid`),
CONSTRAINT `fk_order_user` FOREIGN KEY (`uid`) REFERENCES `User` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2017151091 DEFAULT CHARSET=utf8;
解决办法:将我这里的四个DEFAULT CURRENT_TIMESTAMP删除掉三个。留一个就行,然后mysql5.7会默认类型为datetime。还有在运行数据库时候,要记得有外键关联的表看一下关联了什么表,首先建立,不然报错[Err] 1005 - Can’t create table ‘minsu.orderitem’ (errno: 150)。