SQLite dialect attempts to manually create the primary key index autogenn'ed by the database

Issue #1551 resolved
Former user created an issue

(original reporter: ged) The attached test case produce the following traceback. The error message is really strange too since the table and column names have nothing to do with the problem (and I doubt "sqlite_autoindex_category_1" is a reserved name).

The same test case works fine in 0.5.x (and probably earlier versions too).

Traceback (most recent call last):
  File "test06.py", line 11, in <module>
    meta2.create_all()
  File "/home/ged/devel/sqlalchemy/trunk/lib/sqlalchemy/schema.py", line 1820, in create_all
    bind.create(self, checkfirst=checkfirst, tables=tables)
  File "/home/ged/devel/sqlalchemy/trunk/lib/sqlalchemy/engine/base.py", line 1317, in create
    self._run_visitor(ddl.SchemaGenerator, entity, connection=connection, **kwargs)
  File "/home/ged/devel/sqlalchemy/trunk/lib/sqlalchemy/engine/base.py", line 1348, in _run_visitor
    visitorcallable(self.dialect, conn, **kwargs).traverse(element)
  File "/home/ged/devel/sqlalchemy/trunk/lib/sqlalchemy/sql/visitors.py", line 86, in traverse
    return traverse(obj, self.__traverse_options__, self._visitor_dict)
  File "/home/ged/devel/sqlalchemy/trunk/lib/sqlalchemy/sql/visitors.py", line 197, in traverse
    return traverse_using(iterate(obj, opts), obj, visitors)
  File "/home/ged/devel/sqlalchemy/trunk/lib/sqlalchemy/sql/visitors.py", line 191, in traverse_using
    meth(target)
  File "/home/ged/devel/sqlalchemy/trunk/lib/sqlalchemy/engine/ddl.py", line 42, in visit_metadata
    self.traverse_single(table)
  File "/home/ged/devel/sqlalchemy/trunk/lib/sqlalchemy/sql/visitors.py", line 76, in traverse_single
    return meth(obj)
  File "/home/ged/devel/sqlalchemy/trunk/lib/sqlalchemy/engine/ddl.py", line 59, in visit_table
    self.traverse_single(index)
  File "/home/ged/devel/sqlalchemy/trunk/lib/sqlalchemy/sql/visitors.py", line 76, in traverse_single
    return meth(obj)
  File "/home/ged/devel/sqlalchemy/trunk/lib/sqlalchemy/engine/ddl.py", line 73, in visit_index
    self.connection.execute(schema.CreateIndex(index))
  File "/home/ged/devel/sqlalchemy/trunk/lib/sqlalchemy/engine/base.py", line 977, in execute
    return Connection.executors[c](c)(self, object, multiparams, params)
  File "/home/ged/devel/sqlalchemy/trunk/lib/sqlalchemy/engine/base.py", line 1027, in _execute_ddl
    return self.__execute_context(context)
  File "/home/ged/devel/sqlalchemy/trunk/lib/sqlalchemy/engine/base.py", line 1063, in __execute_context
    self._cursor_execute(context.cursor, context.statement, context.parameters[0](0), context=context)
  File "/home/ged/devel/sqlalchemy/trunk/lib/sqlalchemy/engine/base.py", line 1125, in _cursor_execute
    self._handle_dbapi_exception(e, statement, parameters, cursor, context)
  File "/home/ged/devel/sqlalchemy/trunk/lib/sqlalchemy/engine/base.py", line 1123, in _cursor_execute
    self.dialect.do_execute(cursor, statement, parameters, context=context)
  File "/home/ged/devel/sqlalchemy/trunk/lib/sqlalchemy/engine/default.py", line 177, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (OperationalError) object name reserved for internal use: sqlite_autoindex_category_1 u'CREATE UNIQUE INDEX sqlite_autoindex_category_1 ON category (name)' ()

Comments (3)

  1. Log in to comment