我可以打开我的mysql数据库上的审计日志记录吗?
我基本上想要监视一小时的所有查询,并将日志转储到文件中.
"Microsoft SQL Server Profiler是SQL Trace的图形用户界面,用于监视数据库引擎或Analysis Services的实例."
我发现使用SQL Server Profiler在开发,测试和调试数据库应用程序问题时非常有用.有人知道MySql是否有相应的程序吗?
我是非常新的php和这个论坛,所以请原谅任何错误或错位的问题.在我提供的代码中,我只是想在DB"mydb"中创建一个表.我测试了与DB的连接(它有效).它只是创建我遇到问题的表.任何建议或批评将不胜感激.谢谢
<?php
/*
*
* File: PDOcreateTabletcompany.php
* By: Jay
* Date: 24-10-13
*
* This script createsTableintoDB
*
*====================================
*
*/
try {
$db = new PDO("mysql:dbname=mydb;host=localhost", "root", "" );
} catch(PDOException $e) {
echo $e->getMessage();
}
$table= "tcompany";
$columns = "ID INT( 11 ) AUTO_INCREMENT PRIMARY KEY, Prename VARCHAR( 50 ) NOT NULL, Name VARCHAR( 250 ) NOT NULL,
StreetA VARCHAR( 150 ) NOT NULL, StreetB VARCHAR( 150 ) NOT NULL, StreetC VARCHAR( 150 ) NOT NULL,
County …Run Code Online (Sandbox Code Playgroud) 我正在创建一个PHP脚本来比较两个数据库的模式.
我已经设法检查有关删除/添加的表,列,索引,引用的架构更改,但是当涉及到重命名的列时,我有点卡住了.
在以下示例中,源数据库包含最新的模式,目标数据库包含类似的模式,但可能已过期.
先决条件:
以目标数据库中的以下模式为例.
Field Type Null Key Default Extra
field1 int(11) NO NULL
field2 int(11) NO NULL
field3 int(11) NO NULL
Run Code Online (Sandbox Code Playgroud)
然后在源数据库中假设以下模式.
Field Type Null Key Default Extra
field1 int(11) NO NULL
field4 int(11) NO NULL
field3 int(11) NO NULL
Run Code Online (Sandbox Code Playgroud)
不知道什么明确发生,我无法确定是否field2改为field4途经DROP, ADD AFTER或CHANGE COLUMN.以下两个查询在表结构方面实现了相同的结果,但使用前者丢失了数据.
(1) ALTER TABLE `demo` DROP `field2`
ALTER TABLE `demo` ADD `field4` INT( 11 ) NOT NULL AFTER `field1`
(2) ALTER TABLE `demo` CHANGE `field2` …Run Code Online (Sandbox Code Playgroud) 我有一个包含250多个表的庞大数据库.在数据库上运行不同类型的查询.由于数据库已经发展多年,现在我需要优化数据库和查询.我已经遵循了索引等优化概念.
我的问题是,如何记录查询及其在数据库上运行的每个查询的执行时间?所以我可以分析哪个查询需要多少秒并优化它们.
鉴于我知道MYSQL Trigger是理想的,但我不知道如何为整个数据库编写触发器,因此它将每个查询记录到具有查询执行时间的表中.我希望触发器记录数据库中发生的所有CRUD操作.
我怎么能完成它?
我使用的是wamp wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-32bmysql版本5.6.17.它提供了mysql和php服务器.
我想跟踪(请参阅)最近执行的查询(从任何地方,即网页,桌面应用程序或在mysqlserver上使用mysql的任何服务).
我知道"该做什么" =>我必须按照http://dev.mysql.com/doc/refman/5.6/en/query-log.html的说明启用查询记录
但我不知道"怎么做"虽然我已经看到如何启用MySQL查询日志?
但我无法找到my.cnf任何地方.我有什么是my.ini在wamp\bin\mysql\mysql5.6.17
因为我使用wamp所以我不熟悉mysql控制台.我想知道如何(在哪里)设置
general_log_file=/path/to/query.log
当我点击一个按钮时,正在对我自己编写的API进行AJAX调用.单击该按钮时,Javascript文件data将从单击的对象中检索两个属性,并将其与URL一起发送.这两个变量用于尚未执行的SQL语句的where子句中.
在进行调用时,处理API请求的PHP脚本通过Input::get('data-attribute-one'))和接收两个变量Input::get('data-attribute-two')).当我输出这两个属性时,显示正确的值.
但是,当我将变量放入查询的where子句时,如下所示:
$fans = Sensor::where('fan_number', '=', $dataAttributeOne)->where('created_at', '>=', $this->now->subHours(6))->get();
Run Code Online (Sandbox Code Playgroud)
没有返回任何结果.所以我换成->get()与->toSql()检查查询,并将其送给我这个陌生的代码行:
Object {fans: "select * from "myawesomedatabasetable" where "fan_number" = ? and "created_at" >= ?"}
Run Code Online (Sandbox Code Playgroud)
$dataAttributeOne是检索到的data-atribute,$this->now->subHours(6)是当前时间减去6小时.当我输出它时,它的格式created_at与数据库中的值相同,当我将它硬编码到Phpmyadmin中的SQL语句时,查询就像魅力一样执行.所以没有问题.
所以我的问题是:为什么在查询执行时变量会变成问号,我该如何解决?
提前致谢!
我有一个非常奇怪的问题,我无法解决问题。我将Laravel用于后端应用程序,在该应用程序上,我对具有30k条记录并带有正确索引的表运行非常简单的查询。这是查询:
DB::select('select * from Orders where ClientId = ?', [$id])
在Laravel应用程序中,此查询运行1.2秒(如果我使用Eloquent模型,则同样。):
"query" => "select * from Orders where ClientId = ?"
"bindings" => array:1 [?
0 => "44087"
]
"time" => 1015.2
Run Code Online (Sandbox Code Playgroud)
问题是,如果我在数据库控制台或PHPMyAdmin中运行THE SAME查询,则该查询大约需要20毫秒。
我不知道怎么可能,因为我使用的是相同的数据库,相同的查询,相同的计算机和相同的数据库连接。
可能是什么原因?
我在 WAMP 中激活一般查询日志文件时遇到问题 我查看了许多线程,但似乎无法让它写入日志。
我已经尝试了好的查询和坏的查询来尝试跳闸日志。
有什么建议?
这是我的 my.ini
# The MySQL server
[wampmysqld]
port = 3306
socket = /tmp/mysql.sock
key_buffer_size = 16M
max_allowed_packet = 1M
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
basedir=c:/wamp/bin/mysql/mysql5.6.17
log-error=c:/wamp/logs/mysql.log
datadir=c:/wamp/bin/mysql/mysql5.6.17/data
log-output = FILE
general-log = 1
general_log_file=C:/wamp/logs/general-query.log
Run Code Online (Sandbox Code Playgroud) 如果用户登录Laravel 5.1,我们可以访问用户ID
Auth::user()->id
Run Code Online (Sandbox Code Playgroud)
在我之前的应用程序(不是laravel)中,当用户登录时,我正在为userid注册会话.我正在检查$ _SESSION ['user_id']是否可用.
我想问一下,当我调用Auth::user()->id它是为每个请求生成和SQL查询?如果它确实对表现不利.
我应该注册一个新的会话吗?
Session::put('user_id', Auth::user()->id);
Run Code Online (Sandbox Code Playgroud)
为了表现.
或Auth:user() - > id是最佳选择?