指定长度以及 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
之前。
我正在尝试使用类似于以下语句的 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
之前。