MariaDB vs MySQL:列定义中的默认表达式不工作



我在MySQL中使用一个表来存储和计算生成物化视图时的时间差。

CREATE TABLE `creationtime` (
`view` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
`start` DATETIME NULL DEFAULT NULL,
`stop` DATETIME NULL DEFAULT NULL,
`diff` TIME NOT NULL DEFAULT timediff(`stop`,`start`)
)
COMMENT='running time'
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
;

这工作完美:开始和停止时间值被存储,当我打开表时,时差被计算在飞行中。

现在我想在MariaDB- server (MariaDB version 10.1.48 on Debian Linux 9)上使用相同的语法,但是我遇到了一个错误。

/* SQL- error(1064):你的SQL语法有错误;检查与您的MariaDB服务器版本对应的手册near ' timemediff (' stop ', ' start ')) COMMENT='运行时间'COLLATE='utf8mb4_general_ci' at line 5 */

我不明白。错误在哪里?

https://mariadb.com/kb/en/create-table/#default-column-option说:

DEFAULT子句在MariaDB 10.2.1中得到了增强。一些增强包括:

  • DEFAULT子句现在可以与表达式或函数一起使用。

由于您目前使用的是MariaDB 10.1,因此需要升级才能获得此功能。由于MariaDB 10.1在2020年10月通过了支持终止,您应该很久以前就升级了。10.2版本也是EOL,而10.3几乎是支持结束(下个月,2023年5月)。

确保您阅读了我上面链接的知识库页面,以获取DEFAULT语法的示例。与MySQL中默认表达式的语法有细微的区别。

相关内容

  • 没有找到相关文章

最新更新