引言:flask操作MySQL的过程中,插入数据时遇到了这样一个问题,单执行SQL语句,在SQL解释器里面执行是没有问题的,或者说相关软件直接忽略了问题,用代码来操作执行相同SQL语句的时候问题就出来了。
ERROR: Field 'culture_title' doesn't have a default value 异常
大概的意思是 插入的数据有没有默认值的字段,所以插入不成功。
异常分析:
查阅资料后,发现在MySQL5.0.2之后对数据的输入进行了强制性的加严处理。同时也保留了之前MySQL中存在的不严厉的处理方式。
解决方案:
a 直接在数据库中对字段进行默认值的设置。
b 在MySQL的配置文件中my.ini 中修改配置:
查找
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
修改为
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
然后重启MySQL即可。
总结:
MySQL在执行语句的时候和用代码执行的时候有时候会产生不同的结果,关键在于两者中间存在着一个不同的中间人,一个是工具如:Navicat等数据库管理工具,一个是用python代码来调用的方式。
网友评论