Ich bin sehr neu zu web2py und ich kann nicht herausfinden, warum mein Code ein Ticket generiert, kann jemand bitte helfen?Web2py 'Unique' Constraint wird immer noch erzwungen, nachdem auf false gesetzt
Ursprünglich hatte ich "unique" auf "true" für job_title gesetzt, aber mein Anwendungsfall für die nun erfordert, dass Duplikate zulässig sind. Ich habe die Einschränkung 'unique' in 'false' geändert, jetzt generieren doppelte Jobtitel ein Ticket.
Hier ist ein Beispiel für das Ticket, das ich bekomme.
Ticket ID
70.214.83.98.2016-07-13.22-35-40.452ce905-fbd9-4ecb-b830-04be06fc0d7a
<class 'sqlite3.IntegrityError'> UNIQUE constraint failed: job.job_title
Version
web2py™ Version 2.14.5-stable+timestamp.2016.04.14.03.26.16
Python Python 2.7.6: /usr/local/bin/uwsgi (prefix: /usr)
Traceback
Traceback (most recent call last):
File "/home/kramer52/web2py/gluon/restricted.py", line 227, in restricted
exec ccode in environment
File "/home/kramer52/web2py/applications/Jobs_test/controllers/appadmin.py", line 703, in <module>
File "/home/kramer52/web2py/gluon/globals.py", line 417, in <lambda>
self._caller = lambda f: f()
File "/home/kramer52/web2py/applications/Jobs_test/controllers/appadmin.py", line 151, in insert
if form.accepts(request.vars, session):
File "/home/kramer52/web2py/gluon/sqlhtml.py", line 1746, in accepts
self.vars.id = self.table.insert(**fields)
File "/home/kramer52/web2py/gluon/packages/dal/pydal/objects.py", line 726, in insert
ret = self._db._adapter.insert(self, self._listify(fields))
File "/home/kramer52/web2py/gluon/packages/dal/pydal/adapters/base.py", line 746, in insert
raise e
IntegrityError: UNIQUE constraint failed: job.job_title
Und hier ist meine Tabellendefinition:
db.define_table('job',
Field('job_title', length=200, unique=False, requires=IS_NOT_EMPTY()),
Field('job_department', 'reference department'),
Field('job_flsa_status', requires=IS_IN_SET(['Exempt', 'Non-Exempt'], zero=None)),
Field('job_pay_type', requires=IS_IN_SET(['Hourly', 'Salaried'], zero=None)),
Field('job_salary_low', 'decimal(10,2)', label='Salary (low)'),
Field('job_salary_high', type='decimal(10,2)', label='Salary (High)'),
Field('job_summary', type='text'),
Field('job_years_requirement', 'integer', requires=IS_INT_IN_RANGE(0, 50), default=5, label='Years Required'),
Field('job_education_requirement', requires=IS_IN_SET(['Some HS', 'HS Diploma', 'Some College','Associates Degree','College Degree B.A.', 'College Degree B.S.', 'Masters Degree'], zero=None), label='Education'),
Field('job_education_requirement_required', 'boolean', default=False, label='Required?'),
auth.signature)
Vorher hatte ich für das einzigartige = true für job_title und Format = '% (job_title) s' gesetzt Job-Tabelle, habe ich seitdem "Format" entfernt
Danke für Ihre Antwort. Ich hätte sagen sollen, dass es sich um eine MYSQL-Datenbank handelt, aber ich habe die Tabelle fallen lassen, neu erstellt und die Daten eingefügt, und es hat gut funktioniert. Gesunder Menschenverstand, ich weiß, aber danke trotzdem. Nicht sicher, wie es MYSQL sein könnte, aber ich bekomme einen SQL-Lite-Fehler .... das ist rätselhaft. –