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

HSQLDB: user lacks privilege or object not found error

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

密码是:

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

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

user lacks privilege or object not found: CUSTOMERS_SEQ.NEXTVAL.

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

我们将不胜感激任何帮助。

表达式 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