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
我正在查看一些旧代码,运行遇到一个问题运行其中一个单元测试。
密码是:
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