Maybe the : migrate=False
I don't see it in your model so maybe web2py try to modify you database?? I have never use keyed table since web2py is not designed for and strongly suggest to migrate data into a surrogate refactored database model... Richard On Wed, Feb 8, 2012 at 3:07 PM, Omi Chiba <ochib...@gmail.com> wrote: > >Do you have a compatible DMS? > Yes, I'm using DB2. > > > > On Feb 8, 2:01 pm, Richard Vézina <ml.richard.vez...@gmail.com> wrote: > > ote that currently this is only available for DB2, MS-SQL, Ingres and > > Informix, but others can be easily added. > > > > At the time of writing, we cannot guarantee that the primarykey attribute > > works with every existing legacy table and every supported database > > backend. For simplicity, we recommend, if possible, creating a database > > view that has an auto-increment id field. > > > > Here what the book says... Do you have a compatible DMS? > > > > Richard > > > > > > > > > > > > > > > > On Wed, Feb 8, 2012 at 2:45 PM, Omi Chiba <ochib...@gmail.com> wrote: > > > I have legacy table called IQWAGFTY which doesn't have id field so I > > > specify primarkey for the existing field. > > > > > I received KeyError: 'TYPRCD' for crud.updae but not crud.create. What > > > am I doing wrong or is it not supported to update with primarykey ? > > > > > Model > > > ------------- > > > db.define_table('IQWAGFTY', > > > Field('TYPRCD', length=15, label="Product Code:"), > > > Field('TYPRKJ', length=50, label="Part Number:"), > > > Field('TYTYPE', length=2, label="Type:"), > > > Field('TYFLAG', length=1, default=""), > > > Field('TYUUSR', length=128, default = auth.user.username.upper() > > > if auth.user else None, label="Updated by:"), > > > Field('TYUDAT', 'datetime', default=request.now, label="updated > > > on:"), > > > primarykey=['TYPRCD']) > > > > > Contoller (update:NG) > > > ------------------------------ > > > def test(): > > > return dict(form=crud.update(db.IQWAGFTY, > > > db.IQWAGFTY(db.IQWAGFTY.TYPRCD=='000115126002200'))) > > > > > TRACEBACK: > > > Traceback (most recent call last): > > > File "D:\web2py\gluon\restricted.py", line 194, in restricted > > > exec ccode in environment > > > File "D:/web2py/applications/Inventory_Reserve_Admin/controllers/ > > > default.py", line 111, in <module> > > > File "D:\web2py\gluon\globals.py", line 149, in <lambda> > > > self._caller = lambda f: f() > > > File "D:\web2py\gluon\tools.py", line 2456, in f > > > return action(*a, **b) > > > File "D:/web2py/applications/Inventory_Reserve_Admin/controllers/ > > > default.py", line 68, in test > > > return dict(form=crud.update(db.IQWAGFTY, > > > db.IQWAGFTY(db.IQWAGFTY.TYPRCD=='000115126002200'))) > > > File "D:\web2py\gluon\tools.py", line 2978, in update > > > detect_record_change = self.settings.detect_record_change): > > > File "D:\web2py\gluon\sqlhtml.py", line 1033, in accepts > > > record_id = dict((k, request_vars[k]) for k in > > > self.table._primarykey) > > > File "D:\web2py\gluon\sqlhtml.py", line 1033, in <genexpr> > > > record_id = dict((k, request_vars[k]) for k in > > > self.table._primarykey) > > > KeyError: 'TYPRCD' > > > > > Contoller(create:OK) > > > ----------------------------- > > > def test(): > > > return dict(form=crud.create(db.IQWAGFTY)) >