断电后无法打开(本地 DynamoDB)数据库文件

Jor*_*Lee 4 amazon-web-services amazon-dynamodb

历史:我能够读取/写入我的本地 DynamoDB 环境。我遵循了用于下载和运行 DynamoDB 的 AWS 文档 [ http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html]

问题:我的计算机意外断电。现在,我在启动 DynamoDB 进程后收到以下错误

java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
Run Code Online (Sandbox Code Playgroud)

错误信息

Aug 23, 2017 3:52:42 PM com.almworks.sqlite4java.Internal log
WARNING: [sqlite] SQLiteQueue[shared-local-instance.db]: stopped abnormally, reincarnating in 3000ms
Aug 23, 2017 3:52:45 PM com.almworks.sqlite4java.Internal log
WARNING: [sqlite] cannot open DB[2]: com.almworks.sqlite4java.SQLiteException: [14] unable to open database file
Aug 23, 2017 3:52:45 PM com.almworks.sqlite4java.Internal log
SEVERE: [sqlite] SQLiteQueue[shared-local-instance.db]: error running job queue
com.almworks.sqlite4java.SQLiteException: [14] unable to open database file
    at com.almworks.sqlite4java.SQLiteConnection.open0(SQLiteConnection.java:1480)
    at com.almworks.sqlite4java.SQLiteConnection.open(SQLiteConnection.java:282)
    at com.almworks.sqlite4java.SQLiteConnection.open(SQLiteConnection.java:293)
    at com.almworks.sqlite4java.SQLiteQueue.openConnection(SQLiteQueue.java:464)
    at com.almworks.sqlite4java.SQLiteQueue.queueFunction(SQLiteQueue.java:641)
    at com.almworks.sqlite4java.SQLiteQueue.runQueue(SQLiteQueue.java:623)
    at com.almworks.sqlite4java.SQLiteQueue.access$000(SQLiteQueue.java:77)
    at com.almworks.sqlite4java.SQLiteQueue$1.run(SQLiteQueue.java:205)
    at java.lang.Thread.run(Thread.java:748)
Run Code Online (Sandbox Code Playgroud)

尝试:这篇文章最接近我的错误,但它不涉及 DynamoDB,而是一些云日志等。 [ https://forums.aws.amazon.com/thread.jspa?threadID=165134]

关于如何纠正数据库文件的任何想法?

gfo*_*ier 13

正如 Zudhin 所建议的,这确实是一个权限问题/sf/answers/3719266281/

就我而言,我正在运行 Ubuntu,我发现的快速而肮脏的解决方案只是更改该卷的本地文件夹的权限:

sudo chmod 777 ./docker/dynamodb(前提是按照https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html后这是您的本地文件夹)


小智 11

这可能是一个许可问题。尝试更新权限。

sudo chown user dynamodb -R
chmod 775 -R dynamodb
Run Code Online (Sandbox Code Playgroud)


小智 9

对我来说使用 dockerdynamodb-local映像的最佳方法是将用户更改为root,这是我的部分docker-compose.yml文件:

version: '3.8'

services:
  dynamodb-local:
    image: amazon/dynamodb-local:latest
    container_name: dynamodb-local
    restart: unless-stopped
    ports:
      - "8000:8000"
    user: root
    volumes:
      - ../tmp/dynamodb:/home/dynamodblocal/data
    working_dir: /home/dynamodblocal
    command: "-jar DynamoDBLocal.jar -sharedDb -dbPath ./data"
Run Code Online (Sandbox Code Playgroud)


Jor*_*Lee 1

快速解决方案是重新安装所有内容。

rm -rf <unzipped DynamoDB Local folder>
Run Code Online (Sandbox Code Playgroud)

然后,返回安装说明。 http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html

我对jar文件不熟悉。用新的jar文件替换它们就像重新安装一样?