Maybe schema disagreement?

Run nodetool describecluster to discover

Carlos Alonso | Software Engineer | @calonso <https://twitter.com/calonso>

On 13 November 2015 at 11:14, Rajesh Radhakrishnan <
rajesh.radhakrish...@phe.gov.uk> wrote:

>
> Hi,
>
> I am using Cassandra 2.1.5 in a cluster of two nodes (running CentOS) and
> using Python driver to connect to Cassandra.
> My Python code snippet is show here:
>
>
> #-------------------------------------------------------------------------------------------------------------------
> import time, os, datetime, keyword
> import uuid
> from cassandra.cluster import Cluster
> import os.path, sys
> ....
> from cassandra.auth import PlainTextAuthProvider
> ....
>        auth_provider = PlainTextAuthProvider(username, password)
>        cluster = Cluster([node1,node2],auth_provider=auth_provider)
>        session = cluster.connect();
>
>         session.execute("CREATE table IF NOT EXISTS test.iau ("
>                     "id uuid, "
>                     "sample_id text, "
>                     "PRIMARY KEY (sample_id) )");
>
>         print " \n created the table"
>         #--------
>
>         sqlInsertSampleIdUid = "INSERT INTO test.iau (id, sample_id)
> VALUES ("+str(uuid.uuid1())+",'sample123')"
>         session.execute(sqlInsertSampleIdUid)
>         print " \n Inserted main ids into the table"
>         #-------
>
>         colNames
> =['col1','col2','col3','col4','col5','col6','col7','col8','col9']
>
>         for colName in colNames :
>
>             sqlAlterStatement1 = " ALTER TABLE test.iau ADD "+colName+"
> text"
>             print sqlAlterStatement1
>             session.execute(sqlAlterStatement1)
>             sqlAlterStatement1 = None
>
>         print " Altered tables :: "
>         # ----------------------------------------
>         count = 0
>         for colName in colNames :
>             count = count +1
>             sqlUpdateGeneDetection = " UPDATE test.iau SET "+colName+" =
> '"+str(count)+"' WHERE sample_id = 'sample123'"
>             session.execute(sqlUpdateGeneDetection)
>             sqlUpdateGeneDetection = None
>
>         print " Updated tables :: "
>         session.cluster.shutdown()
> ....
>
> #-------------------------------------------------------------------------------------------------------------------
>
> Very rarely this code works, but most of the time it fails when it reach
> ALTER statement.
> FYI, I tried preparedstatement with binding in INSERT, UPDATE statements
> too.
>
> The error with output is shown here:
>
> #------
> created the table
>
>  Inserted main ids into the table
>  ALTER TABLE test.iau ADD col1 text
>  ALTER TABLE test.iau ADD col2 text
>  ALTER TABLE test.iau ADD col3 text
>  ALTER TABLE test.iau ADD col4 text
>  ALTER TABLE test.iau ADD col5 text
>  ALTER TABLE test.iau ADD col6 text
>  ALTER TABLE test.iau ADD col7 text
>  ALTER TABLE test.iau ADD col8 text
>  ALTER TABLE test.iau ADD col9 text
> E
> ======================================================================
>
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>   File "UnitTests.py", line 313, in test_insert_data
>     session.execute(sqlAlterStatement1)
>   File "/usr/local/lib/python2.7/site-packages/cassandra/cluster.py", line
> 1405, in execute
>     result = future.result(timeout)
>   File "/usr/local/lib/python2.7/site-packages/cassandra/cluster.py", line
> 2976, in result
>     raise self._final_exception
> InvalidRequest: code=2200 [Invalid query] message="Invalid column name
> col9 because it conflicts with an existing column"
>
> ----------------------------------------------------------------------
> Ran 1 test in 9.856s
> #------
>
> But when I checked the table using CQL col9 is not there.
>
> Is there' schema' refresh issue or is it bug in Cassandra 2.1.5?
>
> Thank you.
> Kind regards
> Rajesh R
>
>
>
> **************************************************************************
> The information contained in the EMail and any attachments is confidential
> and intended solely and for the attention and use of the named
> addressee(s). It may not be disclosed to any other person without the
> express authority of Public Health England, or the intended recipient, or
> both. If you are not the intended recipient, you must not disclose, copy,
> distribute or retain this message or any part of it. This footnote also
> confirms that this EMail has been swept for computer viruses by
> Symantec.Cloud, but please re-sweep any attachments before opening or
> saving. http://www.gov.uk/PHE
> **************************************************************************
>

Reply via email to