在 Spring Boot 中使用 H2 异常:JdbcSQLSyntaxErrorException
1、概览 在 Spring Boot 中使用 h2 作为内存数据库的时候遇到异常:org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement expected “identifier”。
本文将会介绍出现 org.h2.jdbc.JdbcSQLSyntaxErrorException 的原因以及解决方案。
2、原因 通常,H2 会抛出 JdbcSQLSyntaxErrorException 来提示 SQL 语句中的语法错误。其中,“expected identifier” 信息表明 SQL 期望一个合适的 标识符,而我们没有给出。
导致这种异常的最常见原因是使用保留关键字作为标识符。
例如,使用关键字 table 来命名特定的 SQL 表就会导致 JdbcSQLSyntaxErrorException。
另一个原因是在 SQL 语句中缺少或错用了关键字。
3、重现异常 作为开发者,我们经常使用 user 一词来表示用户表。不幸的是,它在 H2 中是一个 保留关键字。
为了重现异常,我们将故意使用关键字 user。
因此,首先让我们添加一个基本的 SQL 脚本来初始化 H2 数据库并为其添加数据:
INSERT INTO user VALUES (1, 'admin', 'p@ssw@rd'); INSERT INTO user VALUES (2, 'user', 'userpasswd'); 接下来,我们将创建一个实体(Entity)类来映射 user 表: