相信很多人和我一样是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系统读取数据库表需要注意大小写,在和数据库相关的操作时最好用小写。