当前位置: 首页 > 知识库问答 >
问题:

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

齐招
2023-03-14

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

代码为:

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。下一个瓦尔。

我正在阅读错误本身,似乎找不到任何东西。奇怪的是,当我在本地运行查询从CUSTOMERS选择CUSTOMERS_SEQ.NEXTVAL时,它工作正常。

任何和所有的帮助将不胜感激。

共有1个答案

姚建树
2023-03-14

表达式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
 类似资料: