ThinkPHP怪现象:数据表新增字段后开发模式可更新运行模式无法更新
一、情况说明
一个已经发布的程序中,数据库原有表article,字段原有id、content、title三个字段,原程序可以正常运行,通过大D方法可以正常的更新数据库。
现在要对这个程序进行更新,数据库表article现在增加字段media,在开发阶段(Debug=true)时程序可以正常运行后,将开发模式关闭(Debug=false),然后运行程序,发现media字段无法更新,想想可能是缓存的问题,于是将Runtime目录给删除掉,再次运行,OK!media字段可以更新了,于是将程序打包通过FTP发布到服务器后解压。
结果程序又无法更新了,想想也许是缓存的问题,好吧,将Runtime目录删除掉,再试,还是不行。好吧,在入口文件index.php中将DEBUG又重新设置为true,并覆盖到服务器上,测试,工作正常。
到底发生了什么问题呢?
二、发觉问题
将服务器上的入口文件中的DEBUG还是设置为FALSE,然后将页面信息PAGE_TRACE设置为TRUE,再次测试,发现并没有运行时的错误。
于是,我只好将数据库对象通过dump()方法打印出来,同时将更新到数据库中的数据集也通过dump()方法打印出来。这时候发现数据集中又media字段的信息,而数据库对象中的字段却没有media字段的信息。
我再次将DEBUG设置为TRUE打开开发模式,再次dump()数据库操作对象,这时数据库操作对象中居然有了media字段。于是乎只好确认是缓存问题了。
遂通过FTP软件将Runtime目录再次删除掉,这时候才注意到了一个奇怪的现象,Runtime目录删除不了,其中Rumtime目录下还存在着Data/_fields目录,多次删除都无法删除,只有一点可以说明,这个文件夹下还有文件。
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
copyright © 2008-2019 入门客AI创业平台 版权所有 备案号:湘ICP备2023012770号