- changed status to resolved
Tutorial produces a database error
Issue #656
resolved
The following tutorial creates an error when you follow through with it:
http://www.sqlalchemy.org/docs/tutorial.html#tutorial_gettingstarted
2007-07-14 18:13:52,299 INFO sqlalchemy.engine.base.Engine.0x..d0 BEGIN
2007-07-14 18:13:52,302 INFO sqlalchemy.engine.base.Engine.0x..d0 select nextval('"users_user_id_seq"')
2007-07-14 18:13:52,303 INFO sqlalchemy.engine.base.Engine.0x..d0 None
2007-07-14 18:13:52,309 INFO sqlalchemy.engine.base.Engine.0x..d0 INSERT INTO users (user_id, user_name, password) VALUES (%(user_id)s, %(u
ser_name)s, %(password)s)
2007-07-14 18:13:52,309 INFO sqlalchemy.engine.base.Engine.0x..d0 {'user_name': 'Ed', 'password': 'edspassword', 'user_id': 1L}
2007-07-14 18:13:52,316 INFO sqlalchemy.engine.base.Engine.0x..d0 ROLLBACK
Traceback (most recent call last):
File "test.py", line 41, in ?
session.flush()
File "/usr/lib/python2.4/site-packages/sqlalchemy/orm/session.py", line 302, in flush
self.uow.flush(self, objects)
File "/usr/lib/python2.4/site-packages/sqlalchemy/orm/unitofwork.py", line 210, in flush
flush_context.execute()
File "/usr/lib/python2.4/site-packages/sqlalchemy/orm/unitofwork.py", line 400, in execute
UOWExecutor().execute(self, head)
File "/usr/lib/python2.4/site-packages/sqlalchemy/orm/unitofwork.py", line 1018, in execute
self.execute_save_steps(trans, task)
File "/usr/lib/python2.4/site-packages/sqlalchemy/orm/unitofwork.py", line 1032, in execute_save_steps
self.save_objects(trans, task)
File "/usr/lib/python2.4/site-packages/sqlalchemy/orm/unitofwork.py", line 1023, in save_objects
task.mapper.save_obj(task.polymorphic_tosave_objects, trans)
File "/usr/lib/python2.4/site-packages/sqlalchemy/orm/mapper.py", line 1184, in save_obj
c = connection.execute(statement, params)
File "/usr/lib/python2.4/site-packages/sqlalchemy/engine/base.py", line 520, in execute
return Connection.executors[c](c)(self, object, *multiparams, **params)
File "/usr/lib/python2.4/site-packages/sqlalchemy/engine/base.py", line 560, in execute_clauseelement
return self.execute_compiled(elem.compile(dialect=self.dialect, parameters=param), *multiparams, **params)
File "/usr/lib/python2.4/site-packages/sqlalchemy/engine/base.py", line 571, in execute_compiled
self._execute_raw(context)
File "/usr/lib/python2.4/site-packages/sqlalchemy/engine/base.py", line 584, in _execute_raw
self._execute(context)
File "/usr/lib/python2.4/site-packages/sqlalchemy/engine/base.py", line 602, in _execute
raise exceptions.SQLError(context.statement, context.parameters, e)
sqlalchemy.exceptions.SQLError: (ProgrammingError) value too long for type character varying(10)
'INSERT INTO users (user_id, user_name, password) VALUES (%(user_id)s, %(user_name)s, %(password)s)' {'user_name': 'Ed', 'password': 'edspassword', 'user_id': 1L}
The value 'edspassword' is too long for the password column length defined by a previous example.
There are many more instances of passwords being used in the tutorial which product the same effect.
Comments (1)
-
repo owner - Log in to comment
it passes using doctest, since sqlite doesnt seem to care about the length. im assuming youre testing with a database other than sqlite.
regardless, changed the field length to 15 in changeset:2899