先上结论:
出现INSERT failed: datatype mismatch:如果csv文件有中文,那么就不影响,大概是中文变问号的问题,如果用python来做,不会有问题。确定是这个情况的方法是:select * from 表名,如果出现中文为问号,则是。
出现如下报错
是多次导入同一csv文件的原因,无视即可。
在导入csv文件前在sqlite环境下输入pragma table_info(faqs_scores);并确认返回的数据类型不是全为TEXT(除非这是你期望的),否则输入delete from 表名以清空表中数据,然后检查models文件,0001_initial.py文件,然后重新导入。
事件:
python web开发基础教程(Django版 微课版)第81页,即4.4.1~4.4.2。
scores.csv文件放在项目文件中与manage.py同级目录下,SQLite工具包配置环境变量(我直接把三个exe放到了python的Scrpts里)。报错如下
sqlite> .separator ','#实测可以不打引号或改为双引,或将csv文件中的","改为"|"就不用打这一行
sqlite> .import scores.csv faqs_scores
scores.csv:1: INSERT failed: datatype mismatch
我尝试了删除db.sqlite3文件,然后用[1]中情景一的方式重新迁移了数据库,然后重新导入csv文件,无效。
然后我用[2]中方式清空表并重新导入csv文件,无效。
使用select * from faqs_scores;查看表,发现导入成功但中文问号。
在python shell环境下查看表,中文正常显示。
[1]:Django开发—如何重置migration_卓修武的博客-CSDN博客_django 重新migrate
后记:啊,解决完问题之后大部分的过程都忘了,代码也没保存,bug还不能复现,所以就酱。