wd.update_or_insert(wd.category_id==category.webid, name=category.name, description=category.description)
should be wd.update_or_insert(wd.category_id==category.webid, category_id==category.webid, name=category.name, description=category.description) else category_id is always 0 (not sure why zero, should be none and fail the not-null=True, perhaps you added this later and web2py did not pass it along to the db). On Wednesday, 12 December 2012 10:15:57 UTC-6, simon wrote: > > I get a duplicate entry error on an update_or_insert. First record with > category_id=1 is inserted fine. Second record with category_id=2 fails > saying"Duplicate entry '0-1' for key 'PRIMARY'" > > Model: > web.define_table('category_description', > Field('category_id', 'integer', notnull=True, writable=False), > Field('language_id', 'integer', notnull=True, writable=False, > default=1), > Field('name', 'text', length=255, notnull=True), > Field('description', 'text', length=65535, notnull=True), > primarykey=['category_id', 'language_id']) > > Controllert: > wd=web.category_description > wd.update_or_insert(wd.category_id==category.webid, > name=category.name, > description=category.description) > --