Ява Azure создать таблицу, если не существует в хранилище таблиц - PullRequest
0 голосов
/ 31 октября 2018

Почему я получаю следующую ошибку при попытке создать таблицу в хранилище таблиц:

com.microsoft.azure.storage.StorageException: OK на com.microsoft.azure.storage.StorageException.translateException (StorageException.java:87) на com.microsoft.azure.storage.core.ExecutionEngine.executeWithRetry (ExecutionEngine.java:209) в com.microsoft.azure.storage.table.QueryTableOperation.performRetrieve (QueryTableOperation.java:178) на com.microsoft.azure.storage.table.TableOperation.execute (TableOperation.java:694) на com.microsoft.azure.storage.table.CloudTable.exists (CloudTable.java:888) на com.microsoft.azure.storage.table.CloudTable.createIfNotExists (CloudTable.java:290) на com.microsoft.azure.storage.table.CloudTable.createIfNotExists (CloudTable.java:265) на be.dela.gdprvault.test.StorageTestClient.getTableByName (StorageTestClient.groovy: 25) at be.dela.gdprvault.logging.entity.ActionLogSystemSpec.getActionLogFromTableByPartitionAndRowKey (ActionLogSystemSpec.groovy: 114) в be.dela.gdprvault.logging.entity.ActionLogSystemSpec.should сохранить ActionLog сущность в хранилище таблиц (ActionLogSystemSpec.groovy: 96) Вызывается: java.lang.NullPointerException на com.microsoft.azure.storage.table.TableDeserializer.parseJsonEntity (TableDeserializer.java:290) на com.microsoft.azure.storage.table.TableDeserializer.parseSingleOpResponse (TableDeserializer.java:203) в com.microsoft.azure.storage.table.QueryTableOperation.parseResponse (QueryTableOperation.java:143) в com.microsoft.azure.storage.table.QueryTableOperation $ 1.postProcessResponse (QueryTableOperation.java:236) в com.microsoft.azure.storage.table.QueryTableOperation $ 1.postProcessResponse (QueryTableOperation.java:193) на com.microsoft.azure.storage.core.ExecutionEngine.executeWithRetry (ExecutionEngine.java:155) ... еще 8

docer-compose
  azure-blob-storage:
    image: arafato/azurite
    ports:
      - "10000:10000"
      - "10002:10002"
    volumes:
      - data-volume:/opt/azurite/folder

    CloudTable table = tableClient.getTableReference(tableName)
    table.createIfNotExists() -- there is error

я сделал по статье https://docs.microsoft.com/en-us/azure/cosmos-db/table-storage-how-to-use-java

1 Ответ

0 голосов
/ 01 ноября 2018

Я пытался воспроизвести ваше исключение, но безуспешно. Вы можете использовать Fiddler , чтобы перехватить запрос и ответ вашего кода Java, чтобы проверить код состояния и подробности ошибки.

Вы можете сослаться на мой рабочий код:

import com.microsoft.azure.storage.*;
import com.microsoft.azure.storage.table.*;

public class CreateTableTest {

    public static final String storageConnectionString =
            "DefaultEndpointsProtocol=https;" +
                    "AccountName=***;" +
                    "AccountKey=***;" +
                    "TableEndpoint=https://***.table.cosmosdb.azure.com:443/;" ;

    public static void main(String[] args) {

        try
        {
            // Retrieve storage account from connection-string.
            CloudStorageAccount storageAccount =
                    CloudStorageAccount.parse(storageConnectionString);

            // Create the table client.
            CloudTableClient tableClient = storageAccount.createCloudTableClient();

            // Create the table if it doesn't exist.
            String tableName = "people";
            CloudTable cloudTable = tableClient.getTableReference(tableName);
            cloudTable.createIfNotExists();

            System.out.println("Create Success...");
        }
        catch (Exception e)
        {
            // Output the stack trace.
            e.printStackTrace();
        }

    }
}

Моя версия SDK:

<dependency>
   <groupId>com.microsoft.azure</groupId>
   <artifactId>azure-storage</artifactId>
   <version>8.0.0</version>
</dependency>
...