2011-02-02 164 views
0

我正在使用最新版本的H2,即版本1.3.150,并且在更新VARCHAR2时出现org.h2.jdbc.JdbcSQLException。H2数据库更新表时出现“重命名文件时出错”

  • 的SQL语句是一个非常简单的

    UPDATE STAMP_TABLE SET DESCRIPTION='a bit of text' WHERE STAMPID='s/1'

  • 和表本身没有什么特别的,只是一堆VARCHAR2的和BLOB

  • 它可以在第一时间并且第二次失败并显示错误消息:

    Error while renaming file "C:\my\local\path\1.t6.lob.db" to "C:\my\local\path\1.temp.lob.db"

  • 使用SQL语句的方法如下:

    public void updateStampDescription(StampId stampId, String description) throws SQLException { 
    
        PreparedStatement stmt = null; 
    
        try { 
    
         stmt = conn.prepareStatement(UPDATE_STAMP_DESCRIPTION); 
         stmt.setString(1, description); 
         stmt.setString(2, stampId.getId()); 
    
         logger.debug("SQL statement: " + stmt.toString()); 
    
         stmt.execute(); 
    
        } 
        catch(SQLException ex){ 
         logger.error("Error while updating table " + STAMPS_TABLE_NAME + ", description column: " + ex.getMessage()); 
         ex.printStackTrace(); 
         throw ex; 
        } 
        finally { 
         if(stmt!=null) stmt.close(); // Also closes the ResultSet 
        } 
    
    } 
    

任何想法有什么不对?

+1

你还可以发布堆栈跟踪(包括根本原因)吗?这是一台Windows机器吗?在尝试重命名仍然打开的文件时(基本上,您不能在Windows上),我知道有关问题。在任何情况下,都可以通过将数据库升级到BLOB存储在数据库而不是外部文件的新格式来解决此问题 - 请参阅http://h2database.com/html/tutorial.html#upgrade_backup_restore – 2011-02-02 19:14:40

+0

@Thomas,Good点关于Windows,因为我没有看到这发生在Linux上。 – dm76 2011-02-03 10:49:43

回答

0

我会回答我的问题:

事实上,该项目正坐在一个Dropbox的文件夹,并在当时正在使用Dropbox的文件,因此不能被重命名为H2通缉。

相关问题