指定长度以及 varchar 的默认值时出现 SQLException

SQLException when specifying length along with default value for varchar

我正在尝试使用类似于以下语句的 Spring 初始化内存中的 H2 数据库:

===Throws SQLException===

CREATE TABLE config (
  id INTEGER NOT NULL,
  module_id VARCHAR(10) NOT NULL DEFAULT 'global',
  ...
);

每次我尝试 运行 项目时都会抛出 SQLException 说语法错误。经过大量试验后,我注意到当我删除 DEFAULT 关键字时,没有抛出异常。

===This works===

CREATE TABLE config (
  id INTEGER NOT NULL,
  module_id VARCHAR(10) NOT NULL,
  ...
);

更有趣的是,当我删除 VARCHAR 上的长度并保留 DEFAULT 关键字时,它也起作用了。

===This also works===

CREATE TABLE config (
  id INTEGER NOT NULL,
  module_id VARCHAR NOT NULL DEFAULT 'global',
  ...
);

所以问题是,是否有什么东西阻止将这两个指定在一起?

根据documentation for the SQL grammar中语法图的严格阅读...

default 子句必须在 NOT NULL 之前。