Tutorial produces a database error

Issue #656 resolved
Former user created an issue

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)

  1. Mike Bayer repo owner

    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

  2. Log in to comment