

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 對 Amazon Keyspaces 中的資料定義語言錯誤進行故障診斷
<a name="troubleshooting.cql"></a>

建立資源時遇到問題？ 以下是一些常見問題，以及如何解決這些問題。

## 資料定義語言錯誤
<a name="troubleshooting-cql"></a>

Amazon Keyspaces 會以非同步方式執行資料定義語言 (DDL) 操作，例如建立和刪除金鑰空間和資料表。如果應用程式在準備好之前嘗試使用 資源，則操作會失敗。

您可以在 中監控新金鑰空間和資料表的建立狀態 AWS 管理主控台，這表示金鑰空間或資料表何時處於待定或作用中狀態。您也可以透過查詢系統結構描述資料表，以程式設計方式監控新金鑰空間或資料表的建立狀態。金鑰空間或資料表準備就緒時，會顯示在系統結構描述中。

**注意**  
若要使用 最佳化金鑰空間的建立 CloudFormation，您可以使用此公用程式將 CQL 指令碼轉換為 CloudFormation 範本。此工具可從 [GitHub 儲存庫](https://github.com/aws/amazon-keyspaces-cql-to-cfn-converter)取得。

**Topics**
+ [金鑰空間建立錯誤](#troubleshooting.cql.keyspace)
+ [資料表建立錯誤](#troubleshooting.cql.table)
+ [我嘗試使用 Amazon Keyspaces point-in-time復原 (PITR) 還原資料表，但還原失敗](#troubleshooting.cql.pitr)
+ [我嘗試使用 INSERT/UPDATE 來編輯自訂存留時間 (TTL) 設定，但操作失敗](#troubleshooting.cql.ttl)
+ [超過資料欄](#troubleshooting.cql.upload)
+ [範圍刪除錯誤](#troubleshooting.cql.rangedelete)

### 我建立了新的金鑰空間，但我無法檢視或存取它
<a name="troubleshooting.cql.keyspace"></a>

**您從應用程式收到嘗試存取新金鑰空間的錯誤。**

如果您嘗試存取仍在非同步建立的新建立 Amazon Keyspaces 金鑰空間，您會收到錯誤。下列錯誤為範例。

```
InvalidRequest: Error from server: code=2200 [Invalid query] message="unconfigured keyspace mykeyspace"
```

檢查新金鑰空間何時可供使用的建議設計模式是輪詢 Amazon Keyspaces 系統結構描述表 (system\$1schema\$1mcs.\$1)。

如需詳細資訊，請參閱[檢查 Amazon Keyspaces 中的金鑰空間建立狀態](keyspaces-create.md)。

### 我建立了新的資料表，但我無法檢視或存取它
<a name="troubleshooting.cql.table"></a>

**您從應用程式收到嘗試存取新資料表的錯誤。**

如果您嘗試存取仍在非同步建立的新建立 Amazon Keyspaces 資料表，您會收到錯誤。例如，嘗試查詢尚無法使用的資料表會失敗並顯示`unconfigured table`錯誤。

```
InvalidRequest: Error from server: code=2200 [Invalid query] message="unconfigured table mykeyspace.mytable"
```

嘗試使用 檢視資料表時， 會`sync_table()`失敗`KeyError`。

```
KeyError: 'mytable'
```

檢查新資料表何時可供使用的建議設計模式是輪詢 Amazon Keyspaces 系統結構描述資料表 (system\$1schema\$1mcs.\$1)。

這是所建立資料表的範例輸出。

```
user-at-123@cqlsh:system_schema_mcs> select table_name,status from system_schema_mcs.tables where keyspace_name='example_keyspace' and table_name='example_table';

table_name | status

------------+----------

example_table | CREATING

(1 rows)
```

這是作用中資料表的範例輸出。

```
user-at-123@cqlsh:system_schema_mcs> select table_name,status from system_schema_mcs.tables where keyspace_name='example_keyspace' and table_name='example_table';

table_name | status

------------+----------

example_table | ACTIVE

(1 rows)
```

如需詳細資訊，請參閱[在 Amazon Keyspaces 中檢查資料表建立狀態](tables-create.md)。

### 我嘗試使用 Amazon Keyspaces point-in-time復原 (PITR) 還原資料表，但還原失敗
<a name="troubleshooting.cql.pitr"></a>

如果您嘗試使用point-in-time復原 (PITR) 還原 Amazon Keyspaces 資料表，而且您看到還原程序開始但未成功完成，您可能尚未設定此特定資料表還原程序所需的所有必要許可。

除了使用者許可之外，Amazon Keyspaces 可能需要許可，才能代表您委託人在還原程序期間執行動作。如果資料表使用客戶受管金鑰加密，或者您使用限制傳入流量的 IAM 政策，就會發生這種情況。

例如，如果您在 IAM 政策中使用條件索引鍵來限制來源流量至特定端點或 IP 範圍，則還原操作會失敗。若要允許 Amazon Keyspaces 代表您委託人執行資料表還原操作，您必須在 IAM 政策中新增`aws:ViaAWSService`全域條件金鑰。

如需還原資料表之許可的詳細資訊，請參閱 [設定 Amazon Keyspaces PITR 的還原資料表 IAM 許可](howitworks_restore_permissions.md)。

### 我嘗試使用 INSERT/UPDATE 來編輯自訂存留時間 (TTL) 設定，但操作失敗
<a name="troubleshooting.cql.ttl"></a>

如果您嘗試插入或更新自訂 TTL 值，操作可能會失敗，並出現下列錯誤。

```
TTL is not yet supported.
```

若要使用 或 `INSERT``UPDATE`操作指定資料列或資料欄的自訂 TTL 值，您必須先為資料表啟用 TTL。您可以使用`ttl`自訂屬性為資料表啟用 TTL。

如需啟用資料表自訂 TTL 設定的詳細資訊，請參閱 [使用自訂存留時間 (TTL) 更新資料表](TTL-how-to-enable-custom-alter.md)。

### 我嘗試將資料上傳至 Amazon Keyspaces 資料表，並收到超過資料欄數量的錯誤
<a name="troubleshooting.cql.upload"></a>

**您正在上傳資料，並已超過可同時更新的欄數。**

當您的資料表結構描述超過 350 KB 的大小上限時，就會發生此錯誤。如需詳細資訊，請參閱[Amazon Keyspaces 配額 （適用於 Apache Cassandra)](quotas.md)。

### 我嘗試刪除 Amazon Keyspaces 資料表中的資料，但該範圍的刪除失敗
<a name="troubleshooting.cql.rangedelete"></a>

**您嘗試依分割區索引鍵刪除資料，並收到範圍刪除錯誤。**

當您嘗試在一個刪除操作中刪除超過 1，000 個資料列時，就會發生此錯誤。

```
Range delete requests are limited by the amount of items that can be deleted in a single range.
```

如需詳細資訊，請參閱[刪除範圍](functional-differences.md#functional-differences.range-delete)。

若要在單一分割區中刪除超過 1，000 個資料列，請考慮下列選項。
+ 依分割區刪除 – 如果大部分分割區少於 1，000 個資料列，您可以嘗試依分割區刪除資料。如果分割區包含超過 1，000 個資料列，請改為嘗試由叢集資料欄刪除 。
+ 透過叢集資料欄刪除 – 如果您的模型包含多個叢集資料欄，您可以使用資料欄階層來刪除多個資料列。叢集資料欄是一種巢狀結構，您可以透過對頂層資料欄操作來刪除許多資料列。
+ 依個別資料列刪除 – 您可以逐一查看資料列，並依其完整的主索引鍵 （分割區資料欄和叢集資料欄） 刪除每一列。
+ 最佳實務是考慮跨分割區分割資料列 – 在 Amazon Keyspaces 中，建議您將輸送量分散到資料表分割區。這會將資料和存取平均分配到實體資源，以提供最佳輸送量。如需詳細資訊，請參閱[資料建模最佳實務：設計資料模型的建議](data-modeling.md)。

當您規劃大量工作負載的刪除操作時，也請考慮下列建議。
+ 使用 Amazon Keyspaces，分割區可以包含幾乎沒有限制的資料列數目。這可讓您擴展分割區「比傳統的 100 MB Cassandra 指引更寬」。時間序列或分類帳隨著時間經過 1 GB 的資料成長並不罕見。
+ 使用 Amazon Keyspaces，當您必須為繁重的工作負載執行刪除操作時，無需考慮任何壓縮策略或墓地。您可以視需要刪除任意數量的資料，而不會影響讀取效能。