org.h2.jdbc.JdbcSQLSyntaxErrorException: SQL 语句中的语法错误"删除表如果存在 [*]user CASCADE";预期的"标识符";SQL语句:



我的src/main/resources/data.sql文件中有下面的data.sql文件。我希望从user.csv文件创建用户标签。

DROP TABLE IF EXISTS `USER` CASCADE;
CREATE TABLE `user` AS SELECT * FROM CSVREAD('classpath:user.csv');

当spring应用程序启动时,它总是出错,并出现以下错误-

由:org.h2.jdbbc.JdbcSQLSyntaxErrorException引起:SQL语句中的语法错误"删除表如果存在[*]用户CASCADE";;预期的";标识符";;SQL语句:

我花了很长时间来找出错误,但没有。知道我该如何修复这个错误吗?

H2数据库的较新版本中有一个关键字USER,因此需要正确转义。您应该使用双引号"而不是单引号'

从H2文档复制/粘贴:

有一个不能用作标识符的关键字列表(表名称、列名等(,除非它们被引号括起来带有双引号(。以下令牌是H2中的关键字:

用户。。。

H2的新版本可能比旧版本有更多的关键字。

始终检查您是否能够通过诸如pgadmin或toad之类的DBMS工具对正在使用的数据库运行相同的查询。我假设您使用的是postgresql,所以如果您仍然使用,则保留user关键字。需要创建名为user的表,它必须用双引号括起来,也许你可以尝试用双引号代替Java中的单引号,你需要转义这个双引号才能包含到这个查询文本的字符串文本中

DROP TABLE IF EXISTS "USER" CASCADE;
CREATE TABLE "user" AS SELECT * FROM CSVREAD('classpath:user.csv')

最新更新