django.db.utils.ProgrammingError: “eoias_company_credit_rating” is not a sequence
django.db.utils.ProgrammingError: “eoias_company_credit_rating” is not a sequence

django.db.utils.ProgrammingError: “eoias_company_credit_rating” is not a sequence

django.db.utils.ProgrammingError: "eoias_company_credit_rating" is not a sequence

使用django插入数据的时候出现这个错误

先贴源代码:

store_results = [CreditRating(**j, company_name_id=company_name_id, company_name=company_name) for j in results]
if info.data_credit_rating:
    CreditRating.objects.filter(company_name_id=company_name_id).delete()
CreditRating.objects.bulk_create(store_results)

起初是怀疑bulk_create这个多插入的方法有问题,以为哪里没用好,想debug源代码的,但是本项目是远程调试,无法debug服务器端的django源代码

后来还是打算排除是不是sql有问题,就在settiings.py中配置logger,使得能够打印django的日志,

方法参考调试Django时打印SQL语句的日志 – lemon_guess

image-20230214151122965

可见django源代码的相关设置:

//python3.6site-package/django/db/backends/utils.py

image-20230214151510150

打印出来sql以及相关报错日志:

image-20230214151615560

image-20230214151634122

将sql复制,在navicat中执行:

image-20230214151714697

所以破案的,问题不是出在django身上,而是表本身。

然后在百度上查询得知,很可能就是序列没设置好id自增,检查一下果然如此,再更改id自增序列就好了

image-20230214151833318

序列创建参考:Navicat创建PG库id自增序列 – lemon_guess

发表回复

您的电子邮箱地址不会被公开。