java - H2 org.h2.jdbc.JdbcSQLException 与正确的 DDL sql : error code = [42000-196]

标签 java spring spring-boot h2

在执行下面的ddl时,抛出了org.h2.jdbc.JdbcSQLException。当然我是在隔离环境下测试的,没有任何其他的sql。更尴尬的是,错误消息除了[42000-196]外没有提供任何提示。我已经在 official website 上检查了一些与此 sql 相关的特定于 h2 的语法, 但是我错过了特殊的语法吗?

sql

CREATE TABLE Product
(
  `id`          BIGINT           NOT NULL    AUTO_INCREMENT COMMENT 'id',
  `title`       VARCHAR(1000)    NULL        COMMENT 'title',
  `price`       INT              NULL        COMMENT 'price',
  `simpledesc`  VARCHAR(1000)    NULL        COMMENT 'simpledesc',
  `content`     TEXT             NULL        COMMENT 'content',
  `stock`       INT              NULL        COMMENT 'stock',
  `seq`         INT              NULL        COMMENT 'product 끼리의 순서',
  `categoryid`  INT              NULL,
  `timelog`     DATETIME         NOT NULL    DEFAULT now() COMMENT 'timelog',
  PRIMARY KEY (id)
);

控制台上的错误消息

Caused by: org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "[*] CREATE TABLE Product ( id BIGINT NOT NULL COMMENT 'id', title VARCHAR(1000) NULL COMMENT 'title', price INT NULL COMMENT 'price', simpledesc VARCHAR(1000) NULL COMMENT 'simpledesc', content TEXT NULL COMMENT 'content', stock INT NULL COMMENT 'stock', seq INT NULL COMMENT 'product 끼리의 순서', categoryid INT NULL, timelog DATETIME NOT NULL DEFAULT now() COMMENT 'timelog', PRIMARY KEY (id) )"; SQL statement:
 CREATE TABLE Product ( id BIGINT NOT NULL COMMENT 'id', title VARCHAR(1000) NULL COMMENT 'title', price INT NULL COMMENT 'price', simpledesc VARCHAR(1000) NULL COMMENT 'simpledesc', content TEXT NULL COMMENT 'content', stock INT NULL COMMENT 'stock', seq INT NULL COMMENT 'product 끼리의 순서', categoryid INT NULL, timelog DATETIME NOT NULL DEFAULT now() COMMENT 'timelog', PRIMARY KEY (id) ) [42000-196]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) ~[h2-1.4.196.jar:1.4.196]
    at org.h2.message.DbException.get(DbException.java:179) ~[h2-1.4.196.jar:1.4.196]
    at org.h2.message.DbException.get(DbException.java:155) ~[h2-1.4.196.jar:1.4.196]
    at org.h2.message.DbException.getSyntaxError(DbException.java:191) ~[h2-1.4.196.jar:1.4.196]
    at org.h2.command.Parser.getSyntaxError(Parser.java:534) ~[h2-1.4.196.jar:1.4.196]
    at org.h2.command.Parser.parsePrepared(Parser.java:492) ~[h2-1.4.196.jar:1.4.196]
    at org.h2.command.Parser.parse(Parser.java:321) ~[h2-1.4.196.jar:1.4.196]
    at org.h2.command.Parser.parse(Parser.java:297) ~[h2-1.4.196.jar:1.4.196]
    at org.h2.command.Parser.prepareCommand(Parser.java:258) ~[h2-1.4.196.jar:1.4.196]
    at org.h2.engine.Session.prepareLocal(Session.java:578) ~[h2-1.4.196.jar:1.4.196]
    at org.h2.engine.Session.prepareCommand(Session.java:519) ~[h2-1.4.196.jar:1.4.196]
    at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204) ~[h2-1.4.196.jar:1.4.196]
    at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:176) ~[h2-1.4.196.jar:1.4.196]
    at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:164) ~[h2-1.4.196.jar:1.4.196]
    at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:95) ~[HikariCP-2.7.8.jar:na]
    at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java) ~[HikariCP-2.7.8.jar:na]
    at org.springframework.jdbc.datasource.init.ScriptUtils.executeSqlScript(ScriptUtils.java:471) ~[spring-jdbc-5.0.4.RELEASE.jar:5.0.4.RELEASE]
    ... 121 common frames omitted

最佳答案

我认为错误在这一行:

`timelog`     DATETIME         NOT NULL    DEFAULT now() COMMENT 'timelog',

将其更新为然后检查是否出现任何错误:

 `timelog`     DATETIME         NOT NULL    COMMENT 'timelog',

--------已更新--------

没有那个函数先试试这个(),我已经测试过这个

CREATE TABLE Product
(
  `id`          BIGINT           NOT NULL    AUTO_INCREMENT COMMENT 'id',
  `title`       VARCHAR(1000)    DEFAULT NULL        COMMENT 'title',
  `price`       INT              DEFAULT NULL COMMENT 'price',
  `simpledesc`  VARCHAR(1000)    DEFAULT NULL COMMENT 'simpledesc',
  `content`     TEXT             DEFAULT NULL COMMENT 'content',
  `stock`       INT              DEFAULT NULL COMMENT 'stock',
  `seq`         INT              DEFAULT NULL COMMENT 'product 끼리의 순서',
  `categoryid`  INT              DEFAULT NULL,
  `timelog`     DATETIME         NOT NULL     COMMENT 'timelog',
  PRIMARY KEY (id)
);

关于java - H2 org.h2.jdbc.JdbcSQLException 与正确的 DDL sql : error code = [42000-196],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49714725/

相关文章:

Spring WebFlux - bodyType=org.springframework.web.multipart.MultipartFile 不支持内容类型 'application/xml'

java - 如何使用 Spring Boot 修复计划任务问题

java - org.springframework.web.servlet.PageNotFound - 未找到具有 URI 的 HTTP 请求的映射

Spring 3、TransactionManagement、Tomcat 和更改数据源 midflight

spring mvc 请求的资源不可用

java - 简单的 jdbcTemplate.query() 应该返回一个列表,但不是

java - 按标题选择选项卡

java - 在 Ubuntu 16.04 中执行命令 "sudo apt-get install oracle-java6-installer"时出错

java - 找不到 nullPointerException 的来源

java - 如何禁用 Spring Boot 应用程序管理端口的安全性?