指定长度以及varchar

时间:2016-08-02 05:22:48

标签: java spring h2

我试图用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',
  ...
);

所以问题是,是否存在阻止这两者同时指定的东西?

1 个答案:

答案 0 :(得分:2)

严格阅读documentation for the SQL grammar ...

中的语法图

enter image description here

default子句必须在NOT NULL之前。