当前位置:首页 » 编程语言 » yii获取执行的sql

yii获取执行的sql

发布时间: 2024-05-18 05:08:12

‘壹’ yii2怎么连接sql server

在saas中,多租户数据库分库管理时常常需要自定义数据库链接,并且需要支持在框架加载后再调用数据库连接。

Yii2 如何定义数据库连接要注意的是:

即除了使用/Yii::app−>set()外,还需要再多使用下面一句话:/Yii::app->$database->open();
因为在框架加载后再调用时,yii本身并不会帮打开连接。使用如下代码:

php"><?php/***User:chenlb*/namespacebackend/moles/monitorMysql/controllers/show;classAllDatabasesextends/yii/base/Action{privatestatic$_conn=[];publicfunctionrun(){//CreateTestDBConnection$db=$this->getDb('数据库名称');var_mp($db->getSchema()->getTableSchema('log')->columns['id']->isPrimaryKey);exit;}/***得到数据库连接*/publicfunctiongetDb($database){if(!isset(self::$_conn[$database])){$connInfo=['class'=>'yii/db/Connection','dsn'=>'mysql:host=HOST_IP;port=3307;dbname='.$database,'username'=>'username','password'=>'password','charset'=>'utf8'];/Yii::$app->set($database,$connInfo);/Yii::$app->$database->open();self::$_conn[$database]=/Yii::$app->$database;}returnself::$_conn[$database];}}

‘贰’ yii 中如何输出刚刚执行的完整的sql语句

1.修改main.php,加入如下代码:
'log'=>array(
'class'=>'CLogRouter',
'routes'=>array(
array(
'class'=>'CFileLogRoute',
'levels'=>'error, warning,trace',
),
// 以下是新加
array( // configuration for the toolbar
'class'=>'XWebDebugRouter',
'config'=>'alignLeft, opaque, runInDebug, fixedPos, collapsed, yamlStyle',
'levels'=>'error, warning, trace, profile, info',
//'categories' => 'system.db.*',
'allowedIPs'=>array('127.0.0.1','::1','192.168.1[0-5].[0-9]{3}','如果程序在外网需要填入你的公网的ip'),
),

),
)
2.db链接的配置里面做下修改:
'db'=>array(
'connectionString'=>'mysql:host=*.*.*.*;dbname=test',
'emulatePrepare'=>true, // 加入
'enableParamLogging' => true, // 加入
'username'=>'-----',
'password'=>'---',
'charset'=>'utf8',
'schemaCachingDuration'=>'0',
'autoConnect'=>false,
),
3.完成

‘叁’ 怎么获取执行的sql语句

1、select b.spid,a.sid,a.serial#,a.machine from v$session a,v$process b where a.paddr = b.addr and a.machine='yz';
PID SID SERIAL# MACHINE

9497 49 3406 yz
2、利用10046事件开始跟踪

SQL>execute sys.dbms_system.set_ev(49, 3406,10046,1,'');
PL/SQL procere successfully completed.

、这时候你可以运行应用程序,对于web 应用你就可以打开你认为性能比较差页面。

4、如果你要查看这段时间执行了哪些sql语句,可以执行下面的语句结束跟踪

SQL>execute sys.dbms_system.set_ev(49,3406,10046,0,'');

PL/SQL procere successfully completed.

5、SQL trace 工具会收集这个过程中执行的SQL的性能状态数据,记录到一个跟踪文件中.这个跟踪文件提供了许多有用的信息,例如解析次数.执行次数,CPU使用时间等。

6、这时候你可以通过下面的语句获得产生的跟踪文件所在的目录

SQL> select value from v$parameter where name = 'user_mp_dest';

VALUE

--------------------------------------------------------------------------------

/opt/oracle/admin/ocn/ump

7、在/opt/oracle/admin/ocn/ump下找到yzoracle_ora_9497.trc。9497是你当前应用的spid。

8、注意yzoracle_ora_9497.trc是不可读的,我们需要执行oracle的tkprof命令,将yzoracle_ora_9497.trc转化为我们可读的文本文件。

tkprof yzoracle_ora_9497.trc yzoracle_ora_9497.sql

这样你就可以在yzoracle_ora_9497.sql文件中看到所有的sql语句执行次数,CPU使用时间等数据。

‘肆’ Yii2镐庝箞镓ц屽师鐢焥ql璇鍙ユ煡璇

Yii2镐庝箞镓ц屽师鐢焥ql璇鍙
镓ц岋细
Yii::$app->getDb()->createCommand("Your SQL")->execute();
镆ヨ锛
Yii::$app->getDb()->createCommand("Your SQL")->queryAll();
鍏朵粬锛
Yii::$app->getDb()->createCommand("Your SQL")->xxx

‘伍’ 镐庝箞銮峰彇exec(@sql)镄勬墽琛岀粨鏋

exec(@sql)镓ц屽悗锛岀粨鏋滃氨浼氭樉绀哄湪缁撴灉镙忛噷銆

涓句緥锛

浠g爜濡备笅

declare@tablenamevarchar(20)
declare@sqlvarchar(2000)
set@tablename='test'
set@sql='select*from'+@tablename+''
exec(@sql)

镓ц岀粨鏋滐细

‘陆’ yii2.0 怎么打印自动生成的创建sql语句

在config/main.php中

'components'=>array(

'db'=>array(

'enableParamLogging' => true,//增加这行
),

'log'=>array(
'class'=>'CLogRouter',
'routes'=>array(
array(
'class'=>'CFileLogRoute',
'levels'=>'trace, info error, warning', //日志标准增加trace, info
),
),
),

)

在你的application.log中可以直接查看, 另外一种方法,也是最方便的就是安装debugtoolbar扩展,开发必备.

热点内容
php日志查看 发布:2025-07-12 16:12:10 浏览:210
ftp目录映射为本地盘符 发布:2025-07-12 16:06:59 浏览:642
nas存储百科 发布:2025-07-12 16:03:17 浏览:123
python的sort函数 发布:2025-07-12 15:53:21 浏览:47
ensp服务器怎么设置web根目录 发布:2025-07-12 15:47:56 浏览:283
安卓怎么设置二卡发信息 发布:2025-07-12 15:43:50 浏览:742
如何看到无线密码 发布:2025-07-12 15:43:13 浏览:674
好网址可缓存 发布:2025-07-12 15:36:07 浏览:251
centos安装php52 发布:2025-07-12 15:14:19 浏览:297
usb接口编程 发布:2025-07-12 15:14:19 浏览:214