the rest of the error (sorry):

ProgrammingError: ('ERROR', '0A000', 'cannot truncate a table referenced in a 
foreign key constraint')


So what do I need to do (web2py syntax) to avoid this error?



On Tuesday, October 15, 2013 2:41:31 PM UTC-5, Auden RovelleQuartz wrote:
>
> thanks for the response Derek,
>
> I am using PostgreSQL with web2py
>
> how would I do what you recommend regarding "setting to cascade"?
>
> On Tuesday, October 15, 2013 1:36:55 PM UTC-5, Derek wrote:
>>
>> Well, I don't see the error in the code, but if the error you are getting 
>> is 'foreign key constraint' then the problem is you are trying to truncate 
>> tables that are used as foreign keys for other tables. You generally have 
>> to truncate those tables that are referencing the table in question first 
>> (the order of operations is important) and then you can truncate those 
>> tables. This is also a side effect of having the foreign key referential 
>> actions set to 'no action' or 'restrict'. You'd want it to 'cascade' if you 
>> want to delete items in this manner, otherwise, you must reorder your 
>> operations to delete the leaf rows first.
>>
>> On Tuesday, October 15, 2013 10:45:57 AM UTC-7, Auden RovelleQuartz wrote:
>>>
>>>
>>> when I run this function,
>>>
>>> *def truncate_db_tables(the_db):*
>>> * for table_name in the_db.tables():*
>>> * the_db[table_name].truncate()*
>>> * the_db.commit()*
>>> * return()*
>>>
>>>
>>> I get the following error (traceback provided below) - does anyone 
>>> understand what this means?
>>>
>>> Traceback
>>>
>>> 1.
>>> 2.
>>> 3.
>>> 4.
>>> 5.
>>> 6.
>>> 7.
>>> 8.
>>> 9.
>>> 10.
>>> 11.
>>> 12.
>>> 13.
>>> 14.
>>> 15.
>>> 16.
>>> 17.
>>> 18.
>>> 19.
>>> 20.
>>> 21.
>>> 22.
>>> 23.
>>> 24.
>>> 25.
>>> 26.
>>> 27.
>>> 28.
>>> 29.
>>> 30.
>>> 31.
>>> 32.
>>> 33.
>>> 34.
>>> 35.
>>> 36.
>>> 37.
>>> 38.
>>> 39.
>>> 40.
>>> 41.
>>> 42.
>>> 43.
>>> 44.
>>> 45.
>>> 46.
>>>
>>> Traceback (most recent call last):
>>>   File "/home/www-data/web2py/gluon/restricted.py", line 212, in restricted
>>>     exec ccode in environment
>>>   File 
>>> "/home/www-data/web2py/applications/omniavx/controllers/developer.py" 
>>> <https://omniavx.com/admin/default/edit/omniavx/controllers/developer.py>, 
>>> line 353, in <module>
>>>   File "/home/www-data/web2py/gluon/globals.py", line 194, in <lambda>
>>>     self._caller = lambda f: f()
>>>   File 
>>> "/home/www-data/web2py/applications/omniavx/controllers/developer.py" 
>>> <https://omniavx.com/admin/default/edit/omniavx/controllers/developer.py>, 
>>> line 115, in testview5
>>>     default_database_state_dev00()
>>>   File "/home/www-data/web2py/applications/omniavx/models/res_alpha.py" 
>>> <https://omniavx.com/admin/default/edit/omniavx/models/res_alpha.py>, line 
>>> 40, in default_database_state_dev00
>>>     default_database_state_a00()
>>>   File "/home/www-data/web2py/applications/omniavx/models/res_alpha.py" 
>>> <https://omniavx.com/admin/default/edit/omniavx/models/res_alpha.py>, line 
>>> 27, in default_database_state_a00
>>>     default_database_state_dev99()
>>>   File "/home/www-data/web2py/applications/omniavx/models/res_alpha.py" 
>>> <https://omniavx.com/admin/default/edit/omniavx/models/res_alpha.py>, line 
>>> 46, in default_database_state_dev99
>>>     truncate_db_tables(db)
>>>   File "/home/www-data/web2py/applications/omniavx/models/res_alpha.py" 
>>> <https://omniavx.com/admin/default/edit/omniavx/models/res_alpha.py>, line 
>>> 2718, in truncate_db_tables
>>>     the_db[table_name].truncate()
>>>   File "/home/www-data/web2py/gluon/dal.py", line 8648, in truncate
>>>     return self._db._adapter.truncate(self, mode)
>>>   File "/home/www-data/web2py/gluon/dal.py", line 1425, in truncate
>>>     self.execute(query)
>>>   File "/home/www-data/web2py/gluon/dal.py", line 1784, in execute
>>>     return self.log_execute(*a, **b)
>>>   File "/home/www-data/web2py/gluon/dal.py", line 1778, in log_execute
>>>     ret = self.cursor.execute(command, *a[1:], **b)
>>>   File "/home/www-data/web2py/gluon/contrib/pg8000/dbapi.py", line 246, in 
>>> _fn
>>>     return fn(self, *args, **kwargs)
>>>   File "/home/www-data/web2py/gluon/contrib/pg8000/dbapi.py", line 317, in 
>>> execute
>>>     self._execute(operation, args)
>>>   File "/home/www-data/web2py/gluon/contrib/pg8000/dbapi.py", line 322, in 
>>> _execute
>>>     self.cursor.execute(new_query, *new_args)
>>>   File "/home/www-data/web2py/gluon/contrib/pg8000/interface.py", line 399, 
>>> in execute
>>>     self._stmt.execute(*args, **kwargs)
>>>   File "/home/www-data/web2py/gluon/contrib/pg8000/interface.py", line 169, 
>>> in execute
>>>     self._row_desc, cmd = self.c.bind(self._portal_name, 
>>> self._statement_name, args, self._parse_row_desc, kwargs.get("stream"))
>>>   File "/home/www-data/web2py/gluon/contrib/pg8000/protocol.py", line 943, 
>>> in _fn
>>>     return fn(self, *args, **kwargs)
>>>   File "/home/www-data/web2py/gluon/contrib/pg8000/protocol.py", line 1142, 
>>> in bind
>>>     return reader.handle_messages()
>>>   File "/home/www-data/web2py/gluon/contrib/pg8000/protocol.py", line 911, 
>>> in handle_messages
>>>     retval = handler(msg, *args, **kwargs)
>>>   File "/home/www-data/web2py/gluon/contrib/pg8000/protocol.py", line 1181, 
>>> in _bind_nodata
>>>     reader.handle_messages()
>>>   File "/home/www-data/web2py/gluon/contrib/pg8000/protocol.py", line 916, 
>>> in handle_messages
>>>     raise exc
>>> P
>>>
>>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to