Неверный запрос хранения таблицы Azure - ошибка в синтаксисе запроса

Это случилось со мной.

По-видимому, это связано с тем, что у Java нет разрешения на создание разделов реестра.

См.: Java: java.util.Preferences Failed

1
задан Kirsten Greed 7 March 2019 в 09:37
поделиться

1 ответ

Обновление:

Для сообщения об ошибке в предыдущем коде (а не обновления):

{Microsoft.WindowsAzure.Storage.StorageException: 
ErrorCode "InvalidInput"
Element 0 in the batch returned an unexpected response code.
StatusMessage:0:Bad Request - Error in query syntax

Причина в том, что partkey и rowkey в Хранилище таблиц не принимает такие символы, как "/". И когда вы используете DateTime.Now.ToString (), которая содержит символы "/", в качестве суффикса partkey и rowkey, тогда возникнет ошибка. Пожалуйста, отформатируйте дату и время и удалите «/», вы можете использовать DateTime.Now.ToString("o") в своем коде (или другом правильном формате).

Для обновленного кода:

Ошибка в том, что TableOperation class не имеет конструктора (без параметров или без параметров). Вы можете перейти к классу TableOperation и взглянуть на его использование.

enter image description here

В вашем случае вы должны использовать его статический Insert method как var op = TableOperation.Insert(entry) вместо var op = new TableOperation(entry,TableOperationType.Insert).

И еще одна вещь, которую вам нужно знать: partkey и rowkey в хранилище таблиц не принимают такие символы, как «/», поэтому, когда вы используете datetime.now для суффикса partkey и rowkey, вы должны использовать var s = DateTime.Now.ToString("o"). Или это приведет к ошибке.

Пример кода работает для меня нормально:

        public void CreateTableIfMissing()
        {
           var info = new StorageInfo(); // initialized with tablename and connectionstring
           var storageAccount = CloudStorageAccount.Parse(info.ConnectionString);
           var tableClient = storageAccount.CreateCloudTableClient();
           var table = tableClient.GetTableReference(info.TableName);

            try
            {
                table.CreateIfNotExists();

                var s = DateTime.Now.ToString("o");
                var entry = new TableEntity("partkey" + s, "rowkey" + s);
                var op = TableOperation.Insert(entry);
                table.Execute(op);               

            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }

Дополнительные примеры кода о хранении таблиц можно найти в этой статье .

0
ответ дан Ivan Yang 7 March 2019 в 09:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: