我正在遇到这个问题当(我的)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
如果我运行查询,例如
ALTER TABLE `KIIS_EVENT_APPLICATION` CHANGE `COMES` `COMES` TIMESTAMP NOT NULL;
页面说,它已成功完成,但没有任何变化。
如何让COMES列与LEAVES列相同?
可能是因缺少主键造成的吗?当我有2个外国人时,我是否需要一个(这是一个很好的SQL设计实践,还是?)?
答案 0 :(得分: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 Server 5.6之前,表中的第一个时间戳列会产生神奇的行为。
我添加了
timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
具有此类行为的所有列的属性,它可以正常工作。
大!