公司的项目最近出现一个严重bug,同事排查了很久没有找到原因,最终定位到为题是由于thinkphp字段缓存造成的。
thinkphp的M()函数使用了orm技术就是把数据库的表结构映射成对象,而生成这个对象之前先要从数据库读取表结构,为了提高性能通常设置DB_FIELDS_CACHE =true来开启字段缓存,如果修改了数据库的字段没有清空缓存就会导致数据插入异常,需要注意字段缓存和sql缓存并不是同一个概念
字段缓存:DB_FIELDS_CACHE
sql缓存:DB_SQL_BUILD_CACHE