3
I posted this question to django-users@googlegroups.com and got the following answer:
“The problem is in the difference in SQLite and Oracle. Unlike MySQL, PostgresQL, and SQLIte, Oracle doesn’t have auto-generated primary keys. To make up for that, Django on Oracle uses a trigger for each Django-managed table that recognizes a NULL primary key on insert, and generates a key by using a dedicated sequence for that table. Usually if you’re creating the tables from scratch, the Django management tools (syncdb, sqlall, etc) will create the sequence and trigger for you. Without knowing more about how your populated your schema, it’s hard to say what went wrong, but if you run ‘python manage.py sqlall invdb’ it should print out the DDL to create the trigger and sequence, and you can manually add them.”
In my case–and the error may be secondary damage related to this–“python manage.py syncdb” crashed the first time through, and as the standard workaround I ran it a second time, when it ran without reported error. I handed this off to another person so I’m not sure how it got resolved, but I believe that the missing trigger may be secondary damage related to the crash, and I imagine this was resolved by having a database type put code in place so the offending model had the trigger.