当前位置:首页 » 编程语言 » 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扩展,开发必备.

热点内容
java免费视频 发布:2024-11-27 16:45:10 浏览:36
存储hur 发布:2024-11-27 16:37:30 浏览:433
手机锁密码是多少 发布:2024-11-27 16:36:46 浏览:632
大宋脚本下载 发布:2024-11-27 16:21:01 浏览:89
sql认证培训 发布:2024-11-27 15:53:54 浏览:635
php的异常处理 发布:2024-11-27 15:53:54 浏览:417
电脑设置邮件服务器 发布:2024-11-27 15:53:07 浏览:4
安卓平板叫什么名字 发布:2024-11-27 15:48:12 浏览:172
税盘密码忘了去改需要带什么 发布:2024-11-27 15:41:10 浏览:277
拉筋要加密 发布:2024-11-27 15:38:51 浏览:324