2017-10-18 90 views
0

我正在看一些舊的代碼,並遇到運行其中一個單元測試的問題。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它工作正常。

任何和所有的幫助將不勝感激。

回答

2

表達式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 
+0

這是非常有幫助!謝謝! – LivingRobot

相關問題