Django 多对多字段出现table不存在解决办法,pymysql.err.ProgrammingError: (1146, "Table 'net_3j99.sg_loupan_PPS' doesn't exist")

:网站编辑 2023-10-19 17:15:50 :60

Django 多对多字段出现table不存在解决办法,pymysql.err.ProgrammingError: (1146, "Table 'net_3j99.sg_loupan_PPS' doesn't exist")

相信很多人和我一样是WIN系统开发,然后上传到linux系统上。这样有时就会出现我们在win开发时没有出现的情况,比如今天我这就报错

pymysql.err.ProgrammingError: (1146, "Table 'net_3j99.sg_loupan_PPS' doesn't exist")

model.py

class PinPai(CreatCommon):
...

class LouPan(CreatCommon):
...
    PPS = models.ManyToManyField(PinPai, related_name='pps' ,blank=True,verbose_name='品牌商',help_text='选择品牌商的企业名称,如果没有这个企业可以添加')
class Meta:
        db_table = "sg_loupan"

 最开始我没有仔细看,大体一看我就感觉是这个多对多字段出现问题了,然后我就找毛病,找了半天也没解决,在本地还不报错。

然后我仔细一看,没有表“sg_loupan_PPS”,然后查表,的确没有这个表,

多对多字段,会在两个表中建立一个中间表,如我在本地就会生成一个sg_loupan_pps表,

然后我就考虑是哪里影响的大小写的问题,

PPS,这里就是这个多对多字段出现过,然后考虑应该是django调用这个中间表名应该是个拼接的,比如“表_多对多字段名”

在WIN系统下,数据表不需要考虑大小写,但是在linux系统中,数据库表就需要考虑大小写

就像此时出现的情况sg_loupan_PPS这个表就找不到,于是我将这个多对多字段改为小写pps,然后重启python项目,

刷新,解决

总结:linux系统读取数据库表需要注意大小写,在和数据库相关的操作时最好用小写。

Django 多对多字段出现table不存在解决办法,pymysql.err.ProgrammingError: (1146, "Table 'net_3j99.sg_loupan_PPS' doesn't exist")

本文编辑:admin
Copyright © 2022 All Rights Reserved 威海上格软件有限公司 版权所有

鲁ICP备20007704号

Thanks for visiting my site.