HSQLDB:用户缺少权限或找不到对象错误

Posted

技术标签:

【中文标题】HSQLDB:用户缺少权限或找不到对象错误【英文标题】:HSQLDB: user lacks privilege or object not found error 【发布时间】:2017-10-18 20:14:46 【问题描述】:

我正在查看一些旧代码,但在运行其中一个单元测试时遇到了问题。

代码是:

String sql = "insert into customers" + 
            "(name, age, date, id) " +
            " values " + 
            " (?, ?, ?, CUSTOMERS_SEQ.NEXTVAL)";

        if (LOG.isDebugEnabled()) LOG.debug("doInsert: SQL query = " + sql);

        int count;
        PreparedStatement pStmt = null;
        try 
            // insert!
            pStmt = conn.prepareStatement(sql); // fails over here
            //... do other stuff
        
        //...more things

但是,当尝试准备语句时,它会抛出错误

用户缺少权限或找不到对象:CUSTOMERS_SEQ.NEXTVAL。

我正在阅读有关错误本身的信息,但似乎找不到任何东西。奇怪的是,当我在本地运行查询时 Select CUSTOMERS_SEQ.NEXTVAL from CUSTOMERS 没问题。

我们将不胜感激。

【问题讨论】:

【参考方案1】:

表达式CUSTOMERS_SEQ.NEXTVAL 不是SQL 标准表达式,而是Oracle 语法之一。您需要启用以下语句的 Oracle 语法兼容性:

SET DATABASE SQL SYNTAX ORA TRUE

或者在连接 URL 中包含sql.syntax_ora=true

启用此兼容模式后,INSERT 语句应该可以工作(它确实适用于 HSQLDB 2.4.0)

等效的 SQL 标准表达式是:

NEXT VALUE FOR CUSTOMERS_SEQ

【讨论】:

这真的很有帮助!谢谢!

以上是关于HSQLDB:用户缺少权限或找不到对象错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Spring Boot 中进行选择语句时,HSQLDB 用户缺少权限或找不到对象错误

HSQLDB:java.sql.SQLSyntaxErrorException:用户缺少权限或找不到对象

HSQLDB SqlTool 抛出用户缺少权限或找不到对象

SpringBoot 用户缺少权限或找不到对象 HSQLDB

Java HQL org.hsqldb.HsqlException:用户缺少权限或找不到对象

Hibernate、mysql 和 Tomee - org.hsqldb.HsqlException:用户缺少权限或找不到对象