我想记录每个执行的SQL查询,以便我可以调试它,然后在我的数据库工具中复制,粘贴和测试它。
我尝试了这个解决方案(Yii - echo the last query)(以及其他类似解决方案),但它无效,因为我认为它适用于 Yii1 。我需要 Yii2 。
我认为解决方案独立于数据库(我使用PostgreSQL)。
也许我必须在common/config/main-local
文件中配置它。
答案 0 :(得分:4)
如果您需要Yii,请更新main.php中的组件数组,如下所示
'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伐木https://www.yiiframework.com/doc/guide/2.0/en/runtime-loggin
的更多信息答案 1 :(得分:0)
postgresql.conf中
log_min_duration_statement = 0
您需要重新启动Postgresql服务