首页 > 解决方案 > 使用默认表达式时 MySQL 错误 1064

问题描述

我正在使用的 MySQL 8.0.12 实例似乎无法使用默认表达式定义表。

我直接从文档中粘贴了代码,除非我删除默认表达式并用文字默认值替换它们,否则我会收到错误 1064。

我知道某些引擎应该不支持所有默认表达式,但错误代码应该不同(ER_UNSUPPORTED_ACTION_ON_DEFAULT_VAL_GENERATED,3774)。

是否有一个我没有找到的服务器选项关闭默认表达式并只允许文字?

CREATE TABLE t1 (
  -- literal defaults
  i INT         DEFAULT 0,
  c VARCHAR(10) DEFAULT '',
  -- expression defaults
  f FLOAT       DEFAULT (RAND() * RAND()),
  b BINARY(16)  DEFAULT (UUID_TO_BIN(UUID())),
  d DATE        DEFAULT (CURRENT_DATE + INTERVAL 1 YEAR),
  p POINT       DEFAULT (Point(0,0)),
  j JSON        DEFAULT (JSON_ARRAY())
);

标签: mysql

解决方案


感谢@Raymond Niljand 的建议,我刚刚检查了发行说明,并且确实仅从 0.13 版本支持默认表达式。

阅读 CREATE TABLE 文档,我没有怀疑我正在查看一个 3 天前的功能,并且会在一个点版本和另一个版本之间添加如此重要的功能......


推荐阅读