gpt4 book ai didi

python - Django DatabaseError - 没有这样的保存点

转载 作者:太空宇宙 更新时间:2023-11-03 15:21:21 24 4
gpt4 key购买 nike

我的 Django 应用程序中有一个 Celery 任务调用函数,它处理 CSV 文件中的每一行,并尝试使用模型将每一行的信息插入到 PostgreSQL 数据库中,如下所示:

reader = csv.DictReader(csvfile, dialect=csv.get_dialect('excel'))
for row_number, row in enumerate(reader):
try:
...
customer, created = Customer.objects.get_or_create(
first_name = row['First Name'],
last_name = row['Last Name'],
email = row['Email'],
account_owner = account_owner
)
...
except Exception, e:
message = "%s: %s\n" % (type(e).__name__, e)
sys.stderr.write("%s\n" % message)

在循环的第一次迭代中,我在 Customer.objects.get_or_create 处收到以下错误:数据库错误:没有这样的保存点

然后我得到 DatabaseError: current transaction is aborted, commands ignored until end of transaction block 此后的每次迭代。

我已成功插入(使用 SQL 手动)一条记录到此表中,其中包含脚本将提供的相同信息。我也尝试过使用保存点,但没有成功:

sid = transaction.savepoint()
customer, created = Customer.objects.get_or_create(
first_name = row['First Name'],
last_name = row['Last Name'],
email = row['Email'],
account_owner = account_owner
)
transaction.savepoint_commit(sid)

这发生在我的开发机器上,从 Homebrew 安装了 PostgreSQL 9.1。显然,主要目标是解决此问题,但任何有助于调试 Celery 任务或定位我的 Postgres 日志文件的指针也会有所帮助。

最佳答案

After doing some more research ,看起来这的根本原因是 IntegrityError 试图强制保存点回滚,但它不再存在。我修复了 IntegrityError 并且我假设 no savepoint 问题已修复。仍然很高兴在调试时立即看到 IntegrityError...

使用 these instructions 启用日志记录我发现 get_or_create 生成的插入语句违反了外键约束。

关于python - Django DatabaseError - 没有这样的保存点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14343490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com