尝试添加新列时出现MySQL错误

时间:2016-01-12 00:45:48

标签: mysql

尝试在我的博客帖子表中插入新列作为我的网站更新的一部分。

这是我正在使用的mysql代码:

ALTER TABLE blogposts
  ADD (
    postType varchar(20),
    postDate datetime NOT NULL DEFAULT CURDATE(),
    postTime datetime NOT NULL DEFAULT CURTIME()
  );

执行时抛出此错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURDATE(),
      postTime datetime NOT NULL DEFAULT CURTIME()
  )' at line 4 

我认为curdate()是问题,但不明白为什么因为它是一个有效的mysql函数。

这与提议的this不重复。,该帖子中的解决方案无法修复我的问题,而是抛出此错误:

#1067 - Invalid default value for 'postDate' 

使用代码时:

ALTER TABLE blogposts
  ADD (
    postType varchar(20),
    postDate datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
    postTime datetime NOT NULL DEFAULT CURTIME()
  );

因此,作为参考,这似乎不是一个重复的问题。

1 个答案:

答案 0 :(得分:1)

DATETIME列的默认值在MySQL Server 5.6.5之前不可用。

在5.6.5及更高版本中,您指定为默认值的值必须为CURRENT_TIMESTAMP或返回 datetime 值的等效表达式。

https://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html

  

因为我希望它们在默认情况下被分离出来以便于从后端调用。

这似乎是一种轻浮的动机,如果你需要SELECT TIME(c1) AS teh_time, DATE(c1) AS teh_date,几乎你想做的任何其他操作,如日期时间数学,时区转换或DATE_FORMAT()都需要他们要重新组合。

相关问题