Hi all,
I have a project in which I am supposed to use mysql. The database
already made up. I am facing an issue with the primary key check.
Whensover i insert a duplicate value for the primary key i end up with
a ticket rather than a graceful handling.
Here's the db model:

db.define_table('document',
 
Field('sno','integer',requires=[IS_NOT_EMPTY(),IS_NOT_IN_DB(db,'document.sno')]),
    Field('doc_no','string',requires=[IS_NOT_EMPTY()]),
    Field('issue','date',requires=[IS_NOT_EMPTY()]),
    Field('expiry','date',requires=[IS_NOT_EMPTY()]),
    Field('summary','text'),
    primarykey=['sno'],
    migrate=False,
    )


and the error that i receive when duplicating is :

Traceback (most recent call last):
  File "/home/paresh/web2py/gluon/restricted.py", line 188, in
restricted
    exec ccode in environment
  File "/home/paresh/web2py/applications/DB/controllers/appadmin.py",
line 410, in <module>
  File "/home/paresh/web2py/gluon/globals.py", line 96, in <lambda>
    self._caller = lambda f: f()
  File "/home/paresh/web2py/applications/DB/controllers/appadmin.py",
line 125, in insert
    if form.accepts(request.vars, session):
  File "/home/paresh/web2py/gluon/sqlhtml.py", line 1135, in accepts
    pk = self.table.insert(**fields)
  File "/home/paresh/web2py/gluon/sql.py", line 2566, in insert
    return Table.insert(self,**fields)
  File "/home/paresh/web2py/gluon/sql.py", line 2037, in insert
    self._db._execute(query)
  File "/home/paresh/web2py/gluon/sql.py", line 989, in <lambda>
    self._execute = lambda *a, **b: self._cursor.execute(*a, **b)
  File "/usr/lib/pymodules/python2.6/MySQLdb/cursors.py", line 166, in
execute
    self.errorhandler(self, exc, value)
  File "/usr/lib/pymodules/python2.6/MySQLdb/connections.py", line 35,
in defaulterrorhandler
    raise errorclass, errorvalue
IntegrityError: (1062, "Duplicate entry '1-1' for key 'PRIMARY'")

I would like to know that do i need to handle the integrity constraint
myself or am i missing on some point....

Thanks for the help

Reply via email to