Hi,
I'm not sure if you're interested in this sort of report, but what the
heck. When I try to do a metadata.create_all(engine) on my relatively
simple 'declarative' class (see widget.py below), I get the backtrace
below if I'm using the latest (test) MySQL-python driver (1.2.3b1) (it
works fine with 1.2.2). It would appear to be due to this line in
sqlalchemy/databases/mysql.py's 'has_table' function, as MySQL
if e.orig.args[0] == 1146:
It appears that this should be:
if e.orig.args[0][0] == 1146:
At least, when I make that change everything starts working.
Thanks,
-- Jacob
$ python widget.py
2009-02-11 16:22:21,255 INFO sqlalchemy.engine.base.Engine.0x...1e90
SHOW VARIABLES LIKE 'sql_mode'
2009-02-11 16:22:21,261 INFO sqlalchemy.engine.base.Engine.0x...1e90
()
2009-02-11 16:22:21,269 INFO sqlalchemy.engine.base.Engine.0x...1e90
DESCRIBE `widgets`
2009-02-11 16:22:21,269 INFO sqlalchemy.engine.base.Engine.0x...1e90
()
2009-02-11 16:22:21,270 INFO sqlalchemy.engine.base.Engine.0x...1e90
ROLLBACK
Traceback (most recent call last):
File "widget.py", line 21, in <module>
Base.metadata.create_all(engine)
File "/home/jacob/Workspace/kits/future/output/site-packages/
SQLAlchemy-0.5.2-py2.6.egg/sqlalchemy/schema.py", line 1765, in cre\
ate_all
bind.create(self, checkfirst=checkfirst, tables=tables)
File "/home/jacob/Workspace/kits/future/output/site-packages/
SQLAlchemy-0.5.2-py2.6.egg/sqlalchemy/engine/base.py", line 1129, i\
n create
self._run_visitor(self.dialect.schemagenerator, entity,
connection=connection, **kwargs)
File "/home/jacob/Workspace/kits/future/output/site-packages/
SQLAlchemy-0.5.2-py2.6.egg/sqlalchemy/engine/base.py", line 1158, i\
n _run_visitor
visitorcallable(self.dialect, conn, **kwargs).traverse(element)
File "/home/jacob/Workspace/kits/future/output/site-packages/
SQLAlchemy-0.5.2-py2.6.egg/sqlalchemy/sql/visitors.py", line 89, in\
traverse
return traverse(obj, self.__traverse_options__,
self._visitor_dict)
File "/home/jacob/Workspace/kits/future/output/site-packages/
SQLAlchemy-0.5.2-py2.6.egg/sqlalchemy/sql/visitors.py", line 200, i\
n traverse
return traverse_using(iterate(obj, opts), obj, visitors)
File "/home/jacob/Workspace/kits/future/output/site-packages/
SQLAlchemy-0.5.2-py2.6.egg/sqlalchemy/sql/visitors.py", line 194, i\
n traverse_using
meth(target)
File "/home/jacob/Workspace/kits/future/output/site-packages/
SQLAlchemy-0.5.2-py2.6.egg/sqlalchemy/sql/compiler.py", line 795, i\
n visit_metadata
collection = [t for t in sql_util.sort_tables(tables) if
self._can_create(t)]
File "/home/jacob/Workspace/kits/future/output/site-packages/
SQLAlchemy-0.5.2-py2.6.egg/sqlalchemy/sql/compiler.py", line 788, i\
n _can_create
return not self.checkfirst or not self.dialect.has_table
(self.connection, table.name, schema=table.schema)
File "/home/jacob/Workspace/kits/future/output/site-packages/
SQLAlchemy-0.5.2-py2.6.egg/sqlalchemy/databases/mysql.py", line 160\
7, in has_table
rs = connection.execute(st)
File "/home/jacob/Workspace/kits/future/output/site-packages/
SQLAlchemy-0.5.2-py2.6.egg/sqlalchemy/engine/base.py", line 824, in\
execute
return Connection.executors[c](self, object, multiparams, params)
File "/home/jacob/Workspace/kits/future/output/site-packages/
SQLAlchemy-0.5.2-py2.6.egg/sqlalchemy/engine/base.py", line 888, in\
_execute_text
return self.__execute_context(context)
File "/home/jacob/Workspace/kits/future/output/site-packages/
SQLAlchemy-0.5.2-py2.6.egg/sqlalchemy/engine/base.py", line 896, in\
__execute_context
self._cursor_execute(context.cursor, context.statement,
context.parameters[0], context=context)
File "/home/jacob/Workspace/kits/future/output/site-packages/
SQLAlchemy-0.5.2-py2.6.egg/sqlalchemy/engine/base.py", line 950, in\
_cursor_execute
self._handle_dbapi_exception(e, statement, parameters, cursor,
context)
File "/home/jacob/Workspace/kits/future/output/site-packages/
SQLAlchemy-0.5.2-py2.6.egg/sqlalchemy/engine/base.py", line 931, in\
_handle_dbapi_exception
raise exc.DBAPIError.instance(statement, parameters, e,
connection_invalidated=is_disconnect)
sqlalchemy.exc.ProgrammingError: (ProgrammingError) (1146, "Table
'thunderdome.widgets' doesn't exist") 'DESCRIBE `widgets`' ()
================================
# widget.py
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, String, MetaData
from sqlalchemy.databases import mysql
Base = declarative_base()
class Widget(Base):
__tablename__ = 'widgets'
widget_id = Column(String(64), primary_key=True)
widget_text = Column(mysql.MSLongText, nullable=False)
def __init__(self, widget_id, widget_text):
self.widget_id = widget_id
self.widget_text = widget_text
engine = create_engine('mysql://r...@localhost/thunderdome',
echo=True)
Base.metadata.create_all(engine)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---