Amazon dynamodb aws sdk/dynamoose是否可能在DynamoDB local上导致SQLite语法错误?

Amazon dynamodb aws sdk/dynamoose是否可能在DynamoDB local上导致SQLite语法错误?,amazon-dynamodb,aws-sdk-js,dynamoose,amazon-dynamodb-local,Amazon Dynamodb,Aws Sdk Js,Dynamoose,Amazon Dynamodb Local,上下文: dynamodb_1 | Sep 03, 2020 8:14:36 AM com.almworks.sqlite4java.Internal log dynamodb_1 | WARNING: [sqlite] SQLiteDBAccess$10@b6f156c: job exception dynamodb_1 | com.almworks.sqlite4java.SQLiteException: [1] DB[1] prepare() DROP INDEX Foobar*HV

上下文

dynamodb_1  | Sep 03, 2020 8:14:36 AM com.almworks.sqlite4java.Internal log
dynamodb_1  | WARNING: [sqlite] SQLiteDBAccess$10@b6f156c: job exception
dynamodb_1  | com.almworks.sqlite4java.SQLiteException: [1] DB[1] prepare() DROP INDEX Foobar*HVI; [near "*": syntax error]
dynamodb_1  |   at com.almworks.sqlite4java.SQLiteConnection.throwResult(SQLiteConnection.java:1436)
dynamodb_1  |   at com.almworks.sqlite4java.SQLiteConnection.prepare(SQLiteConnection.java:580)
dynamodb_1  |   at com.almworks.sqlite4java.SQLiteConnection.prepare(SQLiteConnection.java:635)
dynamodb_1  |   at com.almworks.sqlite4java.SQLiteConnection.prepare(SQLiteConnection.java:622)
dynamodb_1  |   at com.amazonaws.services.dynamodbv2.local.shared.access.sqlite.AmazonDynamoDBOfflineSQLiteJob.getPreparedStatement(AmazonDynamoDBOfflineSQLiteJob.java:138)
dynamodb_1  |   at com.amazonaws.services.dynamodbv2.local.shared.access.sqlite.SQLiteDBAccess$10.dropGSISQLiteIndex(SQLiteDBAccess.java:1221)
dynamodb_1  |   at com.amazonaws.services.dynamodbv2.local.shared.access.sqlite.SQLiteDBAccess$10.dropIndices(SQLiteDBAccess.java:1169)
dynamodb_1  |   at com.amazonaws.services.dynamodbv2.local.shared.access.sqlite.SQLiteDBAccess$10.doWork(SQLiteDBAccess.java:1155)
dynamodb_1  |   at com.amazonaws.services.dynamodbv2.local.shared.access.sqlite.SQLiteDBAccess$10.doWork(SQLiteDBAccess.java:1152)
dynamodb_1  |   at com.amazonaws.services.dynamodbv2.local.shared.access.sqlite.AmazonDynamoDBOfflineSQLiteJob.job(AmazonDynamoDBOfflineSQLiteJob.java:97)
dynamodb_1  |   at com.almworks.sqlite4java.SQLiteJob.execute(SQLiteJob.java:372)
dynamodb_1  |   at com.almworks.sqlite4java.SQLiteQueue.executeJob(SQLiteQueue.java:534)
dynamodb_1  |   at com.almworks.sqlite4java.SQLiteQueue.queueFunction(SQLiteQueue.java:667)
dynamodb_1  |   at com.almworks.sqlite4java.SQLiteQueue.runQueue(SQLiteQueue.java:623)
dynamodb_1  |   at com.almworks.sqlite4java.SQLiteQueue.access$000(SQLiteQueue.java:77)
dynamodb_1  |   at com.almworks.sqlite4java.SQLiteQueue$1.run(SQLiteQueue.java:205)
dynamodb_1  |   at java.base/java.lang.Thread.run(Thread.java:832)
从Nodejs 6升级到12时发现问题,并与项目的依赖项一起升级。 使用dynamoose 2.3 使用docker compose的容器化应用程序:仅限后端和dynamodb实例

dynamodb的Docker文件:

FROM openjdk:latest

\# Bundle dynamodb
COPY . .

EXPOSE 8000
CMD [ "java", "-jar", "DynamoDBLocal.jar" ]
问题:在提升容器时,在后端初始化dynamodb实例后,会抛出以下错误,导致任何后续查询或调用暂停,并在后端超时时返回

错误

dynamodb_1  | Sep 03, 2020 8:14:36 AM com.almworks.sqlite4java.Internal log
dynamodb_1  | WARNING: [sqlite] SQLiteDBAccess$10@b6f156c: job exception
dynamodb_1  | com.almworks.sqlite4java.SQLiteException: [1] DB[1] prepare() DROP INDEX Foobar*HVI; [near "*": syntax error]
dynamodb_1  |   at com.almworks.sqlite4java.SQLiteConnection.throwResult(SQLiteConnection.java:1436)
dynamodb_1  |   at com.almworks.sqlite4java.SQLiteConnection.prepare(SQLiteConnection.java:580)
dynamodb_1  |   at com.almworks.sqlite4java.SQLiteConnection.prepare(SQLiteConnection.java:635)
dynamodb_1  |   at com.almworks.sqlite4java.SQLiteConnection.prepare(SQLiteConnection.java:622)
dynamodb_1  |   at com.amazonaws.services.dynamodbv2.local.shared.access.sqlite.AmazonDynamoDBOfflineSQLiteJob.getPreparedStatement(AmazonDynamoDBOfflineSQLiteJob.java:138)
dynamodb_1  |   at com.amazonaws.services.dynamodbv2.local.shared.access.sqlite.SQLiteDBAccess$10.dropGSISQLiteIndex(SQLiteDBAccess.java:1221)
dynamodb_1  |   at com.amazonaws.services.dynamodbv2.local.shared.access.sqlite.SQLiteDBAccess$10.dropIndices(SQLiteDBAccess.java:1169)
dynamodb_1  |   at com.amazonaws.services.dynamodbv2.local.shared.access.sqlite.SQLiteDBAccess$10.doWork(SQLiteDBAccess.java:1155)
dynamodb_1  |   at com.amazonaws.services.dynamodbv2.local.shared.access.sqlite.SQLiteDBAccess$10.doWork(SQLiteDBAccess.java:1152)
dynamodb_1  |   at com.amazonaws.services.dynamodbv2.local.shared.access.sqlite.AmazonDynamoDBOfflineSQLiteJob.job(AmazonDynamoDBOfflineSQLiteJob.java:97)
dynamodb_1  |   at com.almworks.sqlite4java.SQLiteJob.execute(SQLiteJob.java:372)
dynamodb_1  |   at com.almworks.sqlite4java.SQLiteQueue.executeJob(SQLiteQueue.java:534)
dynamodb_1  |   at com.almworks.sqlite4java.SQLiteQueue.queueFunction(SQLiteQueue.java:667)
dynamodb_1  |   at com.almworks.sqlite4java.SQLiteQueue.runQueue(SQLiteQueue.java:623)
dynamodb_1  |   at com.almworks.sqlite4java.SQLiteQueue.access$000(SQLiteQueue.java:77)
dynamodb_1  |   at com.almworks.sqlite4java.SQLiteQueue$1.run(SQLiteQueue.java:205)
dynamodb_1  |   at java.base/java.lang.Thread.run(Thread.java:832)
我怀疑这是在通过Dynamoose的model()创建表时发生的,它在后台调用aws的DynamoDB createTable方法

我目前正在分析nodejs 12和dynamoose 2.3的升级。在local中,我更愿意让它运行来测试项目的其他部分,所以我不介意更新索引和重新创建表,但希望知道这个语法错误是从哪里来的,以便修复它并继续


问题:aws sdk或dynamoose是否可能导致DynamoDB本地实例尝试删除带有SQLite语法错误的索引?

问题在于dynamoose 0.8.7用于支持具有哈希键和标记为全局索引的属性的架构。当跳转到最新版本时,一些突破性的更改使其在查询中添加了诸如“*”之类的字符,从而使SQLite抱怨

例如:

const FoobarSchema = new dynamoose.Schema({
    foo: {
        type: String,
        hashkey: true,
        index: {
             global:true
        }
    }
});

const Foobar = dynamoose.model('Foobar', FoobarSchema, Options); // Blow up

我对这个项目和DynamoDb还不熟悉。我不明白把这两个条件放在一起的原因是什么,以及是否应该得到支持。如果有机会,我将对此进行更深入的研究并进行更新。

问题在于,Dynamoose 0.8.7用于支持具有hashkey属性且索引标记为全局的模式。当跳转到最新版本时,一些突破性的更改使其在查询中添加了诸如“*”之类的字符,从而使SQLite抱怨

例如:

const FoobarSchema = new dynamoose.Schema({
    foo: {
        type: String,
        hashkey: true,
        index: {
             global:true
        }
    }
});

const Foobar = dynamoose.model('Foobar', FoobarSchema, Options); // Blow up
我对这个项目和DynamoDb还不熟悉。我不明白把这两个条件放在一起的原因是什么,以及是否应该得到支持。当我有机会的时候,我会更深入地研究这个,并更新这个