【问题标题】:Yii2: How to log SQL query?Yii2:如何记录 SQL 查询?
【发布时间】:2018-04-05 16:52:37
【问题描述】:

我想记录每个执行的 SQL 查询,以便调试它,然后在我的数据库工具中复制、粘贴和测试它。

我尝试了这个解决方案 (Yii - echo the last query)(和其他类似的解决方案),但它不起作用,因为我认为它适用于 Yii1Yii2 我需要它。

我认为解决方案独立于数据库(我使用 PostgreSQL)。 也许我必须在common/config/main-local 文件中配置它。

【问题讨论】:

标签: sql postgresql debugging logging yii2


【解决方案1】:

如果你在 Yii (1) 中需要,请像这样在 main.php 中更新你的 components 数组

       'components'=>array(
    #/*
                        'fixture'=>array(
                                'class'=>'system.test.CDbFixtureManager',                
                        ),
            #*/
                        'db'=>array(
                                'connectionString' => 'mysql:host=localhost;dbname=intakes_manager_test',
                                'emulatePrepare' => true,
                                'username' => 'root',
                                'password' => 'root',
                                'charset' => 'utf8',
                                'enableProfiling'=>true,
            'enableParamLogging'=>true,
                        ),
                        'log'=>array(
                                'class'=>'CLogRouter',
                                'routes'=>array(
                                        array(
                                                'class'=>'CFileLogRoute',
                                                'levels'=>'error,trace,info,warning',
                                                //'filter'=>'CLogFilter',
                    'categories'=>'system.db.*',
                    'logFile'=>'sql.log'
                                        )
                                )
                        ),
         ),

对于 Yii 2 中的相同操作,请执行以下操作

'components' => [
        'log' => [
            'targets' => [
                'file' => [
                    'class' => 'yii\log\FileTarget',
                ],
                'db' => [
                    'class' => 'yii\log\DbTarget',
                ],
            ],
        ],

要了解更多关于 yii 2 日志的信息,请参阅 doc here

【讨论】:

    【解决方案2】:

    postgresql.conf

    log_min_duration_statement = -1 # -1 禁用,0 记录所有语句

    log_min_duration_statement = 0

    您需要重新启动 Postgresql 服务

    【讨论】:

      猜你喜欢
      • 2015-02-07
      • 2012-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-20
      • 2016-11-23
      相关资源
      最近更新 更多