thinkphp 操作mysql遇到的坑。

来源:互联网 发布:2017大学生贷款软件 编辑:程序博客网 时间:2024/06/05 03:33

项目开发过程中发现了很奇怪的问题。

使用tp model save方法某个新添加的字段死活保存不上。但是获取 sql 直接去执行是可以了。很郁闷的一个问题。

当时猜测的 是不是操作错 数据库之类的。后面核实了猜测都没有。在打印m 对象的时候发现了异常。为什么我刚刚添加的字段不在这个对象的fields显示呢。

后来就找了一下 thinkphp的默认配置文件。原来是有DB_FIELDS_CACHE 这个配置的。如果不开启deBug 默认情况下是 true 主要做的操作就是第一次访问数据库对象时获取所有表字段缓存到 Runtime\Data\_fields 下面的 对应表文件中。基本上这个文件是永久不更新了。调用save也直接根据缓存的字段信息 去看哪些缓存字段更新。

后来把这个文件给删除了。然后就更新那个字段成功了。不清楚这个配置优势在哪里。说的是减少数据库i/o。莫非每次操作都要获取一下表的结构。

1 0
原创粉丝点击