在 web2py 应用程序中,我有一个主 postgresql 数据库 (db1),并且我设置了一个单独的 postgresql 数据库 (db1_archive) 用于归档 db1 中的几个表。此功能在具有以下功能的模块中实现:
class db_archives():
def __init__(self, request, response, db1_archive, db1, auth):
...
auth.enable_record_versioning(
archive_db = db1_archive,
tables = [db1.auth_user, db1.table1, db1.table2, ...]
archive_names='archive_%(tablename)s'
)
当从 db1 的相关表中删除某些内容时,它应该自动存档在 db1_archive 中。但是,在删除时,会生成以下 psycopg2.IntegrityError :
在表“archive_table1”上插入或更新违反外键约束“archive_table1_created_by_fkey”详细信息:键(created_by)=(9)>不存在于表“auth_user”中
我猜发生的事情是存档数据库找不到 ID 为 9 的用户。“created_by”字段具有以下约束:
FOREIGN KEY (created_by) REFERENCES auth_user(id) ON DELETE CASCADE
我想从存档数据库中删除所有约束。我认为这可以通过 web2py 的[database_name].executesql()
功能来完成。但是,我尝试了一些方法,例如db1_archive.executesql('SET FOREIGN_KEY_CHECKS=0;')
, 并最终得到错误消息。谁能告诉我一些我可以尝试解决这种情况的 SQL 或 web2py 代码?谢谢。