Problemas al realizar una actualización en Cassandra con una clave de partición compuesta.
Tengo esta tabla en Cassandra:
CREATE TABLE wear_dealer.product_color_size_stock (
productcode text,
colorcode text,
sizecode text,
ean text,
shortdescription text,
stock int,
PRIMARY KEY (productcode, colorcode, sizecode)
) WITH CLUSTERING ORDER BY (colorcode ASC, sizecode ASC)
AND bloom_filter_fp_chance = 0.01
AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
AND comment = ''
AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
AND crc_check_chance = 1.0
AND dclocal_read_repair_chance = 0.1
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';
CREATE INDEX product_color_size_stock_stock_idx ON wear_dealer.product_color_size_stock (stock);
¿Cómo puedo actualizar el campo “shortdescription” teniendo solo el valor para “productcode”?
Cuando ejecuto esta consulta:
cqlsh:wear_dealer> update seasons_product_color_size
set shortdescription ='AAA'
where productcode='RUNTS';
Obtengo el siguiente error:
InvalidRequest: Error from server: code=2200 [Invalid query] message="Some partition key parts are missing: seasoncode"
¿Alguna estrategia para superar esto?
¡Muchas gracias de antemano!
davy.ai
El mensaje de error indica que la consulta de actualización no tiene una clave de partición requerida, en este caso, el
seasoncode
. Sin la clave primaria completa, Cassandra no puede localizar la fila específica en la tabla que necesita ser actualizada. Para superar esto, puede proporcionar todos los valores de clave primaria para la fila que desea modificar o cambiar el esquema de la tabla para incluir un nuevo índice secundario en elproductcode
. Al agregar el índice, puede crear una búsqueda eficiente en el campoproductcode
, que luego se puede utilizar para localizar la fila correcta para la actualización. Una definición de tabla modificada que incluye un índice se vería así:Con este esquema modificado, ahora puede actualizar el campo
shortdescription
para unproductcode
particular utilizando la siguiente consulta:Esto debería permitirle actualizar el campo
shortdescription
sin encontrar el error de “Solicitud inválida”.