【问题标题】:MySQL vs MariaDB - ddl - setting default for time fieldMySQL vs MariaDB - ddl - 为时间字段设置默认值
【发布时间】:2020-03-04 12:10:13
【问题描述】:

我有表格产品,想添加时间类型的列。 我有如下声明:

ALTER TABLE products ADD openTime1 TIME DEFAULT TIME(now());

它适用于 MariaDB,但不适用于 Mysql。 在 mysql 上它会产生错误 -

[42000][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 '(now())' at line 1

谁能告诉我为什么?这里有什么问题?我想这应该是一样的。

【问题讨论】:

  • 嗯,mariadb 和 mysql 完全可以互换是不正确的。有很多不同之处。但是,在 MySQL 8.0 中,您正在尝试做的事情是可能的。
  • 在大多数(但不是全部)架构中,最好使用单个 DATETIME 列,而不是两个单独的列。

标签: mysql mariadb


【解决方案1】:

在 MySQL 中,DEFAULT 字段属性中使用的表达式必须用括号括起来

ALTER TABLE products ADD openTime1 TIME DEFAULT (TIME(now()));

db小提琴here

【讨论】:

    猜你喜欢
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 2020-07-30
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多