数据表结构变更的时候,经常会出现数据保存/更新失败。
如果可以知道具体的sql语句,那么就很容易知道执行失败的原因。
有两种方式获取页面执行过程中调用的sql语句:
1)打开debug,添加sql_dump元素到你页面的layout最下面。
这样所有sql语句会被打印到你页面的最下面。
2)直接修改cake源文件中执行sql语句的函数:
cake/libs/model/datasources/dbo_source.php
function execute($sql, $options = array()) {
......
if($sql.contains('test') {
$this->log($sql, 'test');
}
......
}
观察log文件内容: