- changed status to wontfix
code has been broken after upgrade to 0.3.0 from 0.2.x (something with indexes)
The code looks like this (skipping a log of details):
class visit_dim_category(object): pass
...
class schema ...
#somewhere in class schema:
self.visit_dim_category = Table( "visit_dim_category", self.metadata, Column("id",Integer, primary_key=True) ,Column("affiliate", Integer, ForeignKey("affiliate.id")) ,Column("product", Integer, ForeignKey("product.id")) )
Index("visit_dim_category_idx1",self.visit_dim_category.c.affiliate, self.visit_dim_category.c.product, unique=True)
...
visit_dim_category.mapper = mapper(visit_dim_category, self.visit_dim_category)
#creating test db db = create_engine(conf.connection()) schema = schema(db) schema.metadata.drop_all() schema.metadata.create_all()
it works fine in 0.2.7 and 0.2.8 but after updrade to 0.3 this code gives the following errors:
[04:49 ]cff@joy:~/work/stats3/server/test# ./test_db.py create test schema... mysql://root:root@localhost/stat3 Traceback (most recent call last): File "./test_db.py", line 15, in ? schema.metadata.create_all() File "build/bdist.linux-i686/egg/sqlalchemy/schema.py", line 862, in create_all File "build/bdist.linux-i686/egg/sqlalchemy/engine/base.py", line 413, in create File "build/bdist.linux-i686/egg/sqlalchemy/engine/base.py", line 437, in _run_visitor File "build/bdist.linux-i686/egg/sqlalchemy/schema.py", line 882, in accept_schema_visitor File "build/bdist.linux-i686/egg/sqlalchemy/ansisql.py", line 637, in visit_metadata File "build/bdist.linux-i686/egg/sqlalchemy/schema.py", line 268, in accept_schema_visitor File "build/bdist.linux-i686/egg/sqlalchemy/ansisql.py", line 671, in visit_table File "build/bdist.linux-i686/egg/sqlalchemy/schema.py", line 819, in accept_schema_visitor File "build/bdist.linux-i686/egg/sqlalchemy/ansisql.py", line 749, in visit_index File "build/bdist.linux-i686/egg/sqlalchemy/engine/base.py", line 763, in execute File "build/bdist.linux-i686/egg/sqlalchemy/engine/base.py", line 365, in proxy File "build/bdist.linux-i686/egg/sqlalchemy/engine/base.py", line 329, in _execute_raw File "build/bdist.linux-i686/egg/sqlalchemy/engine/base.py", line 348, in _execute sqlalchemy.exceptions.SQLError: (OperationalError) (1061, "Duplicate key name 'visit_dim_category_idx1'") 'CREATE UNIQUE INDEX visit_dim_category_idx1 ON visit_dim_category (affiliate, product)' ()
Comments (2)
-
repo owner -
repo owner - removed milestone
Removing milestone: 0.3.0 (automated comment)
- Log in to comment
its very likely you have simply created the same Index object twice in your code. version 0.3 no longer stores Indexes in a name-based dictionary attached to tables, and instead stores them in a simple set.
heres a test program which i created based on the fragments you gave (please read new ticket guidelines! creating fully working test cases is as much to encourage the end-user to fully understand their problem as much as it is for me to not have to guess how their program worked.)
heres the output (on a subsequent run, so 'visit_dim_category' already existed):