Je souhaite mettre à jour ou supprimer des données sur la base de données de test citus basé sur postgressql, il me note cette information: modification de la valeur de partition des lignes n'est pas autorisée citus: 6.0 postgresql: 9.6 comment puis-je supprimer ou supprimer des données lorsque j'utilise citus?CitusDB: modification de la valeur de partition des lignes n'est pas autorisée
3
A
Répondre
1
Je pense que le message d'erreur est un peu confus dans ce cas. Il n'est pas autorisé de mettre à jour la valeur de la clé de distribution elle-même, cependant, il est autorisé à mettre à jour/supprimer des lignes en prouvant la valeur de la clé de distribution. Voir l'exemple ci-dessous:
CREATE TABLE test_table (key int, value text);
-- distribute the table
SELECT create_distributed_table('test_table', 'key');
-- insert a row
INSERT INTO test_table VALUES (1, 'some test');
-- get the inserted row
SELECT * FROM test_table WHERE key = 1;
-- now, update the row
UPDATE test_table SET value = 'some another text' WHERE key = 1;
-- get the updated row
SELECT * FROM test_table WHERE key = 1;
-- now delete the row
DELETE FROM test_table WHERE key = 1;
-- see that the row is delete
SELECT * FROM test_table WHERE key = 1;
Maintenant, permettez-moi de donner un exemple de ce qui n'est pas autorisé. Il n'est pas autorisé de mettre à jour la valeur de la clé de distribution, étant donné que la ligne est déjà placée sur un fragment basé sur cette valeur et la mise à jour de la valeur peut se retrouver avec la ligne ne se trouvant plus dans cette partition.
-- insert the row again
INSERT INTO test_table VALUES (1, 'some test');
-- now, try to update the distribution key value
UPDATE test_table SET key = 2 WHERE key = 1;
ERROR: modifying the partition value of rows is not allowed
Espérons que cela aide.
ça marche pour moi. Merci beaucoup – Chan