问题
在用Django加载已有数据库表时,出现
django.db.utils.OperationalError: (1054, "Unknown column 'test.id' in 'field list'")
操作方式
因为是原有的数据表,所以不用再在应用中做表迁移,表生成的部分;
# 在项目文件夹下用此语句查看数据库表中的表类
python manage.py inspectdb
# 可以用如下语句保存models.py中的各类,也可把需要的部分粘到models.py文件中
python manage.py inspectdb > models.py
这样操作后,报上错,原因是id列没有;
网上大多数让删除重迁移,操作方法如下:
暴力破解:
1、删除app下migrations下除_init.py外的所有文件
2、删除相关的表(之前增加的数据会丢失)
3、删除django_migrations表中app=“autotest”对应的记录
重新执行:
python manage.py makemigrations
python manage.py migrate
参考:https://www.e-learn.cn/topic/891088
我想尽量在不重建数据表的情况下,能从数据表中读取数据,具体操作如下:
1。在Mysql中的该表中,插入一列,主键自增;
create table if not exists test(
msisdn varchar(45),
lon float,
lat float
);
load data local infile 'D:\\13.txt' into table test FIELDS TERMINATED BY ' ' lines terminated by '\n';
alter table test add column id int primary key auto_increment;
2。在应用的models.py文件下的该表类中加入一个列
id = models.IntegerField(primary_key=True)
image.png
警告:创建一个数据库测试表本来玩,尽量不要在原始数据上操作。
image.png参考:https://docs.djangoproject.com/en/1.8/howto/legacy-databases/
https://wenku.baidu.com/view/f391ba6030687e21af45b307e87101f69f31fb54.html
网友评论