【问题标题】:how can change derby to READ/WRITE mode如何将 derby 更改为 READ/WRITE 模式
【发布时间】:2014-09-09 14:29:05
【问题描述】:

我有一个 Derby 数据库,它给了我一个只读错误。数据库工作正常,直到上周磁盘空间不足:

Caused by: java.io.IOException: No space left on device
        at java.io.RandomAccessFile.writeBytes0(Native Method)
        at java.io.RandomAccessFile.writeBytes(RandomAccessFile.java:520)
        at java.io.RandomAccessFile.write(RandomAccessFile.java:550)
        at org.apache.derby.impl.store.raw.log.LogAccessFile.writeToLog(Unknown Source)
        at org.apache.derby.impl.store.raw.log.LogAccessFile.flushDirtyBuffers(Unknown Source)
        ... 23 more

我清理了磁盘并且有 80% 的磁盘被释放用于 derby。但德比仍处于只读模式:

java.sql.SQLException: An SQL data change is not permitted for a read-only connection, user or database.
org.apache.derby.impl.jdbc.EmbedSQLException: An SQL data change is not permitted for a read-only connection, user or database.
org.apache.derby.iapi.error.StandardException: An SQL data change is not permitted for a read-only connection, user or database.

我发现那里有一个 db.lck 文件(文件大小为 0),我可以删除那个文件吗?有没有其他方法可以改变它的读/写模式? 谢谢!

【问题讨论】:

    标签: java derby


    【解决方案1】:

    我收到 SQL 错误的原因是由于 root 拥有一个锁定文件。我在.artifactory/derby 目录中找到了它,它被称为db.lck,并且删除它得到了人工制品以再次正常启动。

    我们在 Tomcat 下运行 artifactory,.artifactory 目录位于启动 Tomcat 的用户的主目录中。

    【讨论】:

    • 就我而言,它位于:ARTIFACTORY_HOME/data/derby/
    【解决方案2】:

    我清理了磁盘,但我没有重新启动连接到 derby 的 java 进程。我杀死了进程并重新启动它,德比处于读/写模式。

    【讨论】:

    • 通过重新启动 Derby,您允许 Derby 执行由于磁盘空间不足而暂停的事务恢复。在磁盘空间可用后重新启动 Derby 是正确的做法。
    猜你喜欢
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    相关资源
    最近更新 更多