我试图通过下面的aws键空间查询来创建一个表。它抛出一个"com.datastax.oss.driver.api.core.servererrors.AlreadyExistsException:对象ascend_dev.ascend_r_c_zzzj已经存在的异常“,甚至在键空间中找不到表。
CREATE TABLE ascend_dev.ascend_r_c_zzzg(id uuid PRIMARY KEY, seqno text ,wtdrd text ,drdrstz text ,drexmer text ,drabf text ,drdint text ,drday text ,drlang text ,drmnrsp text ,drhelpd text ) WITH bloom_filter_fp_chance = 0.01
AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
AND comment = ''
AND crc_check_chance = 1.0
AND default_time_to_live = 0
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = '99PERCENTILE';发布于 2022-05-11 16:24:38
表的创建和修改是异步的。可以从系统表system_schema_mcs.tables查询表创建状态。下面的示例将一直阻塞,直到表的状态为ACTIVE
while (session.execute(
"SELECT status FROM system_schema_mcs.tables
WHERE keyspace_name = 'mykeyspacename'
AND table_name = 'mytablename'")
.all().stream().noneMatch(x -> x.getString("status").equalsIgnoreCase("ACTIVE"))) {
//Waiting 1s
Thread.sleep(1000);
}发布于 2022-01-14 23:03:04
AWS键空间中的DDL操作是异步的。这样做可能需要一段时间。您可以在非常少的时间范围内创建表,但没有准备好使用(比如一些资源的terraform操作)。
最好的方法是创建如果不存在,并使用retries /轮询来检查何时可用。
https://stackoverflow.com/questions/70196447
复制相似问题