python
  • cassandra
  • uuid
  • 2010-08-10 14 views 1 likes 
    1

    J'essaie d'insérer une colonne avec des clés UUID1 pour pouvoir les trier par date. J'ai toujours l'erreur "cassandra.ttypes.InvalidRequestException: InvalidRequestException (pourquoi = 'UUIDs doivent être exactement 16 octets')", et je ne sais pas pourquoi.TimeUUID avec Cassandra et Lazyboy

    Voici le code génération de cette erreur:

    from lazyboy import * 
    from lazyboy.key import Key 
    import uuid 
    
    class TestItemKey(Key): 
        def __init__(self, key=None): 
         Key.__init__(self, 'MXstore', 'TestCF', key) 
    
    class TestItem(record.Record): 
        def __init__(self, *args, **kwargs): 
         record.Record.__init__(self, *args, **kwargs) 
         self.key = TestItemKey(uuid.uuid1().bytes) 
    
    connection.add_pool('MXstore', ['localhost:9160']) 
    
    tmp = {'foo' : 'bar'} 
    tmps = TestItem(tmp).save() 
    

    Qu'est-ce que je fait de mal? J'utilise lazyboy 0.705 avec Cassandra 0.6.4. La configuration de stockage est:

    <Keyspaces> 
        <Keyspace Name="MXstore"> 
         <ColumnFamily Name="TestCF" CompareWith="TimeUUIDType" /> 
    
         <ReplicaPlacementStrategy>org.apache.cassandra.locator.RackUnawareStrategy</ReplicaPlacementStrategy> 
         <ReplicationFactor>3</ReplicationFactor> 
         <EndPointSnitch>org.apache.cassandra.locator.EndPointSnitch</EndPointSnitch> 
        </Keyspace> 
    </Keyspaces> 
    
    +0

    quelle est la longueur de 'uuid.uuid1() bytes'.? –

    +0

    len (uuid.uuid1(). Octets) = 16, tapez (uuid.uuid1(). Bytes) = . 16 octets, comme prévu, je suppose. – Pierre

    Répondre

    1

    Le nom de colonne doit être de la version UUID 1. On dirait que votre clé est une version UUID 1

    +0

    Merci beaucoup :) – Pierre

     Questions connexes

    • Aucun problème connexe^_^