我正在使用的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())
);
答案 0 :(得分:0)
由于@Raymond Niljand的建议,我刚刚检查了发行说明,实际上仅.13版支持默认表达式。
在阅读CREATE TABLE文档时,我不怀疑自己正在使用的是3天以前的功能,并且这样的实质性功能会在一个点版本和另一个点版本之间添加...