HSQLDB:用户缺少权限或对象未找到错误
问题描述:
我正在看一些旧的代码,并遇到运行其中一个单元测试的问题。HSQLDB:用户缺少权限或对象未找到错误
的代码是:
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
它工作正常。
任何和所有的帮助将不胜感激。
答
表达式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
这是非常有帮助!谢谢! – LivingRobot