2016-07-06 50 views
0

确实奇怪的麻烦!SQL迫使我使用默认值和属性

当(My)SQL向我的表中添加一些属性时,我不会遇到这个问题,即使我运行正确的命令并获得“SUCCESS”回复。

以下是创建这样一个表的代码:

CREATE TABLE `KIIS_EVENT_APPLICATION` 
      (
        `ID_USER` smallint(3) unsigned NOT NULL, 
        `ID_EVENT` smallint(5) unsigned NOT NULL, 
        `COMES` timestamp, 
        `LEAVES` timestamp, 
        `TRANSPORT_THERE` varchar(30) COLLATE cp1250_czech_cs, 
        `TRANSPORT_BACK` varchar(30) COLLATE cp1250_czech_cs, 
        `ROLE` varchar(30) COLLATE cp1250_czech_cs NOT NULL, 
        `RELEVANCE` tinyint(1) unsigned NOT NULL, 
        FOREIGN KEY (`ID_EVENT`) REFERENCES `KIIS_EVENTS`(`ID_EVENT`), 
        FOREIGN KEY (`ID_USER`) REFERENCES `KIIS_USERS`(`ID_USER`) 
       ) ENGINE=InnoDB DEFAULT CHARSET=cp1250 COLLATE cp1250_czech_cs 

Let's看到的结果是: enter image description here 黄色突出显示的东西我不问。

如果我运行的查询,如

ALTER TABLE `KIIS_EVENT_APPLICATION` CHANGE `COMES` `COMES` TIMESTAMP NOT NULL; 

页说,它成功完成,但没有任何变化。

我如何使COMES列与LEAVES列相同?


难道是由于缺少主键造成的吗?当我有两个外国人时,我需要一个吗(这是一个很好的SQL设计实践,或?)?

+0

如果您可以重现此问题,请将错误报告给phpmyadmin团队。 – Jocelyn

+0

'ALTER TABLE KIIS_EVENT_APPLICATION MODIFY COLUMN COMES TIMESTAMP NOT NULL DEFAULT'0000-00-00 00:00:00';'或更正确地说,'... TIMESTAMP NULL DEFAULT NULL'。 –

+0

MySQL服务器5.6之前,表中的第一个时间戳列默认会获得神奇的行为。 –

回答

0

Michael - sqlbot在评论中得到了正确评价。

ALTER TABLE KIIS_EVENT_APPLICATION MODIFY COLUMN COMES TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00';或更准确地说,... TIMESTAMP NULL DEFAULT NULL

表中的第一个时间戳列在默认情况下在MySQL服务器5.6之前会获得神奇的行为。

我加

timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' 

性质与这种行为的所有列,它工作得很好。

太棒了!