当前位置: 首页 > 面试题库 >

cakephp在执行之前查看已编译的SQL查询

吕利
2023-03-14
问题内容

我的查询在每次运行时都会收到超时错误。与连接的分页。
我想调试SQL,但是由于超时,所以看不到它。

在执行之前如何查看已编译的SQL查询?

一些蛋糕代码

$this -> paginate = array(
        'limit' => '16',
        'joins' => array( array(
                'table' => 'products',
                'alias' => 'Product',
                'type' => 'LEFT',
                'conditions' => array('ProductModel.id = Product.product_model_id')
            )),
        'fields' => array(
            'COUNT(Product.product_model_id) as Counter',
            'ProductModel.name'
            ),
        'conditions' => array(
            'ProductModel.category_id' => $category_id,
        ),
        'group' => array('ProductModel.id')
    );

问题答案:

首先,将debug变量设置为2 in app/config/config.php

然后加:

<?php echo $this->element('sql_dump');?>

在布局的末尾。实际上,应该在默认的蛋糕布局中将其注释掉。

现在,您将能够看到所有转到数据库的SQL查询。

现在复制查询并在数据库上使用SQL
EXPLAIN
命令(MySQL的链接)来查看查询在DBMS中的作用。有关CakePHP调试的更多信息,请参见此处。

由于您的脚本甚至无法渲染,因此您可以尝试直接从数据源获取最新的日志,方法是:

function getLastQuery()
{
    $dbo = $this->getDatasource();
    $logs = $dbo->getLog();
    $lastLog = end($logs['log']);
    return $lastLog['query'];
}

这需要在模型中,因为getDatasource()功能是在模型中定义的。检查整个$logs变量,然后查看其中的内容。



 类似资料:
  • 我有一个包含6个表的数据库。这些表是在内容提供商和数据库助手的帮助下创建的。当我使用这6个表运行应用程序时,应用程序工作,所有表都被创建,我可以查询表并插入数据。 但是,当我尝试将sqlite视图添加到我的数据库助手的onCreate方法时,应用程序会崩溃。 据我所知,视图的onCreate方法是在视图的联接中使用的表onCreate方法之前被调用的,无论出于什么原因。 我需要知道的是如何强制我的

  • Query 也可以直接执行一个SQL查询,即Select命令。在Postgres中支持原始SQL语句中使用 ` 和 ? 符号。 sql := "select * from userinfo" results, err := engine.Query(sql) 当调用 Query 时,第一个返回值 results 为 []map[string][]byte 的形式。 Query 的参数也允许传

  • 问题内容: 我想知道是否有一种方法可以在运行LINQ to SQL查询时查看在Visual Studio 2010 Ultimate中针对数据库执行的T-SQL。 问题答案: 如果您拥有Visual Studio Ultimate,则可以在调试时在IntelliTrace窗口中看到应用程序运行的每个SQL查询。

  • 问题内容: 我试图跟踪此编译错误: 如何在我的Maven编译中找到设置?我使用的是普通香草(据我所知)没有设置任何内容。 问题答案: 这是因为您使用的是普通香草,所以您会遇到此问题。 默认情况下,无论您设置为什么,在编译源代码时都会调用,使用Java 5进行编译: 还要注意,当前的默认源设置是1.5,默认目标设置是1.5,与运行Maven的JDK无关。 要使用其他编译器版本(例如Java 8),可

  • 大家好,我在joomla 2.5中为后端做了一个组件,但是我在执行sql查询时遇到了问题,我的变量是空的,所以它不会显示任何内容。 我有其他的文件和文件,但这里对我的问题很重要。 首先在我的controller.php我有这个内部管理文件 在我的模型文件我有restaurante.php 在我的控制器文件里我有这个 最后,在我的视图文件中,我有一个默认的tmpl文件。显示表格的php 但是元素re