我正在使用的mysql 8.0.12示例似乎无法用默认表达式定义表。
我直接从文档中粘贴了代码,得到的错误是1064,除非我删除默认表达式并用文本默认值替换它们。
我知道有些引擎应该不支持所有默认表达式,但是错误代码应该是不同的(er\u unsupported\u action\u default\u valu 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())
);
1条答案
按热度按时间6kkfgxo01#
感谢@raymond niljand的建议,我刚刚查看了发行说明,实际上默认表达式只在版本13中受支持。
在阅读create table文档时,我并不怀疑我看到的是一个3天的特性,而且这样一个重要的特性将在一个点版本和另一个点版本之间添加。。。