选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

Amazon Keyspaces 中的数据定义语言错误故障排除

聚焦模式

本页内容

Amazon Keyspaces 中的数据定义语言错误故障排除 - Amazon Keyspaces(Apache Cassandra 兼容)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建资源时遇到问题? 以下介绍一些常见问题以及如何解决这些问题。

数据定义语言错误

Amazon Keyspaces 异步执行数据定义语言 (DDL) 操作,例如,创建和删除密钥空间和表。如果应用程序在资源准备就绪之前尝试使用该资源,则操作将失败。

您可以在中监控新密钥空间和表的创建状态 AWS Management Console,这会指示密钥空间或表何时处于待处理状态或处于活动状态。您还可以通过查询系统架构表,以编程方式监控新的键空间或表的创建状态。当键空间或表准备就绪可供使用时,就会在系统架构中变为可见。

注意

要使用优化密钥空间的创建 AWS CloudFormation,您可以使用此实用程序将CQL脚本转换为 CloudFormation 模板。该工具可从GitHub 存储库中获得。

我创建了一个新的键空间,但无法查看或访问它

您在应用程序尝试访问新的键空间时收到错误。

如果您尝试访问新创建的 Amazon Keyspaces 键空间,但该键空间仍在异步创建中,则会出现错误。下面是一个错误示例。

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

要检查新的键空间何时可供使用,推荐的设计模式是轮询 Amazon Keyspaces 系统架构表 (system_schema_mcs.*)。

有关更多信息,请参阅 在 Amazon Keyspaces 中查看键空间的创建状态

我创建了一个新表,但无法查看或访问它

您在应用程序在尝试访问新表时收到错误。

如果您尝试访问新创建的 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_schema_mcs.*)。

这是正在创建的表的输出示例。

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 中查看表的创建状态

我正在尝试使用 Amazon Keyspaces point-in-time 恢复 (PITR) 恢复表,但恢复失败了

如果您尝试使用 recovery (PITR) point-in-time 恢复 Amazon Keyspaces 表,但看到恢复过程已开始但未成功完成,则可能没有为此特定表配置恢复过程所需的所有权限。

除了用户权限外,Amazon Keyspaces 可能还需要权限才能在恢复过程中代表您的主题执行操作。如果使用客户管理的密钥对表进行加密,或者您使用的是限制传入流量的IAM策略,则会出现这种情况。

例如,如果您在IAM策略中使用条件密钥将源流量限制到特定端点或 IP 范围,则还原操作将失败。要允许 Amazon Keyspaces 代表您的委托人执行表恢复操作,您必须在策略中添加aws:ViaAWSService全局条件密钥。IAM

有关恢复表所需的权限的更多信息,请参阅为 Amazon Keyspaces PITR 配置还原表 IAM 权限

我正在尝试使用INSERT/UPDATE来编辑自定义 Time to Live (TTL) 设置,但操作失败了

如果您尝试插入或更新自定义TTL值,则操作可能会失败并出现以下错误。

TTL is not yet supported.

要使用INSERTUPDATE操作为行或列指定自定义TTL值,必须先TTL为表启用。您可以使用ttl自定义属性TTL为表格启用。

有关为表格启用自定义TTL设置的更多信息,请参阅使用自定义生存时间(TTL)更新表

我尝试将数据上传到 Amazon Keyspaces 表中,但收到超出列数的错误

您正在上传数据,但已超过可以同时更新的列数。

当您的表架构超过 350 KB 的大小上限时,就会发生此错误。有关更多信息,请参阅 Amazon Keyspaces(Apache Cassandra 兼容)限额

我尝试删除 Amazon Keyspaces 表中的数据,但删除范围失败了

您尝试通过分区键删除数据,但收到范围删除错误。

当您试图在一次删除操作中删除 1,000 多行时,就会发生此错误。

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

有关更多信息,请参阅 范围删除

要删除单个分区中的 1,000 多行,请考虑以下选项。

  • 按分区删除 - 如果大部分分区的行数低于 1,000 行,则可以尝试按分区删除数据。如果分区包含的行数超过 1,000,则改为尝试按聚类列删除。

  • 按聚类列删除 - 如果模型包含多个聚类列,可以使用列层次结构来删除多行。聚类列是一种嵌套结构,通过对顶级列进行操作,可以删除许多行。

  • 按单行删除 - 您可以遍历行,并按其完整主键(分区列和聚类列)删除每行。

  • 最佳做法是考虑在分区之间拆分行 — 在 Amazon Keyspaces 中,我们建议您在表分区之间分配吞吐量。这样可以将数据和访问平均分配给物理资源,从而提供最佳吞吐量。有关更多信息,请参阅 数据建模最佳实践:设计数据模型的建议

在为繁重的工作负载计划删除操作时,请考虑以下建议。

  • 使用 Amazon Keyspaces,分区可以包含几乎无限数量的行。这样,您就可以将分区扩展为比传统 Cassandra 指导值 100 MB 更“宽”的范围。随着时间的推移,时间序列或分类账的数据增长超过千兆字节的情况并不少见。

  • 有了 Amazon Keyspaces,当您需要对繁重的工作负载执行删除操作时,就无需考虑压缩策略或墓碑。您可以删除任意数量的数据而不会影响读取性能。

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。