相关疑难解决方法(0)

如何获取当前在MySQL服务器上运行的所有查询的完整列表?

我正在使用MySQL Administrator和MySQL Workbench来查看我当前的线程和连接,并且查询显示在这些应用程序中,但它太长并且在屏幕上运行.

什么是查看所有查询的简单方法,无论它们有多长?我可以运行一个简单的SQL语句吗?

mysql sql

15
推荐指数
2
解决办法
6万
查看次数

MYSQL意外插入多行

我有一个问题,并希望有人可以帮助我.

我的问题是每当我在"MainFile"中运行代码时,它会输出它添加了条目的两个ID,但是当我查看我的数据库时,我有六个条目而不是两个...有人可以告诉我为什么它可能会这样做?

注意:我只提供了类中代码的片段,因为提供完整的类将是太多的代码.这是唯一可以执行的代码.

编辑史上的代码

编辑:我已经在这篇文章的底部添加了一个调试日志,验证我只为每个查询执行一次SQL代码.

编辑:我不再使用序列化方法,因为存储此类数据显然不是一个好主意.但是,即使我的新代码将每个单独的值存储在数据库中,我仍然会得到三个条目而不是一个条目.所以,这是同一个问题.什么?

编辑:经过几天的调试后,我已将其缩小到导致问题的这一行

Throwlite::$systemSQL->executeSql("INSERT into ".SQL_COMMENTTHREADS_TABLE." (id, sort_order) values (DEFAULT, '2')");
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看LiteSQL类以供参考:http://pastebin.com/a4C6fF4u

另外,作为参考,以下是用于创建表的代码:

"CREATE TABLE IF NOT EXISTS `" . SQL_COMMENTTHREADS_TABLE . "` (`id` int unsigned NOT NULL AUTO_INCREMENT, `sort_order` int NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;"
Run Code Online (Sandbox Code Playgroud)

而且,即使我非常确定它应该没关系,这里是定义SQL_COMMENTTHREADS_TABLE的地方.

define( 'SQL_COMMENTTHREADS_TABLE', "tl_comment_threads");
Run Code Online (Sandbox Code Playgroud)

php mysql sql duplicates sql-insert

12
推荐指数
1
解决办法
1652
查看次数

为什么删除索引比创建它需要更长的时间?

在postgresql中,我为一个大表添加了一个索引,花了大约1秒钟(坦率地说,让我感到惊讶).

当我去掉索引时,我让它运行> 200秒而不返回,最后取消了放下操作.

CREATE INDEX idx_cservicelocationdivisionstatus_inversed
ON cservicelocationdivisionstatus (cservicelocationdivisionid, startdate, enddate DESC);
Run Code Online (Sandbox Code Playgroud)

花很少的时间,但是

DROP INDEX idx_cservicelocationdivisionstatus_inversed;
Run Code Online (Sandbox Code Playgroud)

花了这么长时间才放弃并取消了.

该表cservicelocationdivisionstatus有6列和大约310k行数据.

为什么删除索引所需的时间比创建索引要长得多?

编辑:此页面指示对于mySql,具有多个索引的表将复制表并重新插入所有行而不删除您正在删除的索引.(更糟糕的是,使用mySql,如果你在同一个表上删除多个索引,它将为你要删除的每个索引重新复制一次表,而不是聪明并重新复制数据一次而不是所有的索引你是这样的事情会发生在postgres吗?

postgresql indexing concurrency

11
推荐指数
1
解决办法
8407
查看次数

关于数据库的实时更新通知更改MYSQL PHP

我想知道如果使用PHP和MySQL将新记录插入数据库,如何触发通知.

php mysql

10
推荐指数
3
解决办法
2万
查看次数

有什么方法可以在Sql Profiler或类似的工具中获得.net堆栈跟踪?

在我之前的工作中,我设计并帮助构建了一个运行时(生产)Profiler工具,除了其他很酷的功能之外,它还能为每个执行的SQL语句提供.Net堆栈跟踪.将其视为类固醇上的SQL-Server Profiler.因此,您还可以获得SQL执行的上下文,而不仅仅是查看SQL语句和持续时间.在开发以数据库为中心的应用程序时,我发现此信息是上帝发送的.

问题是,由于这是开发的,我以前的公司已被赛门铁克收购,虽然该工具仍可下载,但很不清楚许可是什么,而且不是SKU Symnatec正在销售的.

我想知道是否有人知道任何类似的工具会给我堆栈跟踪我的SQL语句执行?

alt截图http://img151.imageshack.us/img151/4357/profiler1jz3.gif

这仍然没有答案,ANTS等人不这样做,只考虑回答否并接受它.

.net c# sql-server profiler profiling

5
推荐指数
1
解决办法
1393
查看次数

实体框架 - 具有多个结果集的存储过程 - 没有行返回

所以,我试图在实体框架中实现具有多个结果集的存储过程.这一切似乎都太容易了.但是,我没有为我的结果集获取任何行(尽管,似乎我确实得到了结果集).

我做了什么:

  1. 创建了返回3个结果集的存储过程
  2. 创建表示返回值的复杂类型
  3. 根据具有多个结果集的存储过程手动编辑edmx文件
  4. 失败3并尝试从同一页面的代码版本,仍然没有回来的行.
  5. 将代码还原为3.

我的edmx文件(仅限相关内容):

  <FunctionImport Name="getGlobalReport2">
    <ReturnType Type="Collection(MTModel.GlobalReport2)"/>
    <ReturnType Type="Collection(MTModel.GlobalReport2)"/>
    <ReturnType Type="Collection(MTModel.GlobalReport2)"/>
    <Parameter Name="regions" Mode="In" Type="String" />
    <Parameter Name="countries" Mode="In" Type="String" />
    <Parameter Name="companySizes" Mode="In" Type="String" />
    <Parameter Name="products" Mode="In" Type="String" />
  </FunctionImport>

  <FunctionImportMapping FunctionImportName="getGlobalReport2" FunctionName="MTModel.Store.getGlobalReport2" >
    <ResultMapping>
      <ComplexTypeMapping TypeName="MTModel.GlobalReport2" />
    </ResultMapping>
    <ResultMapping>
      <ComplexTypeMapping TypeName="MTModel.GlobalReport2" />
    </ResultMapping>
    <ResultMapping>
      <ComplexTypeMapping TypeName="MTModel.GlobalReport2" />
    </ResultMapping>
  </FunctionImportMapping>
Run Code Online (Sandbox Code Playgroud)

我的代码:

var x = mtEntities.getGlobalReport2(regions, countries, companySizes, products);
Response.Write(x.Count());

var y = x.GetNextResult<GlobalReport2>();
Response.Write(y.Count());

var z = x.GetNextResult<GlobalReport2>();
Run Code Online (Sandbox Code Playgroud)

我已经检查了什么:

  1. 检查服务器是否按照我的方式 …

mysql entity-framework

5
推荐指数
1
解决办法
1138
查看次数

如何将shell中的strace解析为纯文本?

我跟踪strace命令生成的日志就像运行PHP一样:

sudo strace -e sendto -fp $(pgrep -n php) -o strace.log
Run Code Online (Sandbox Code Playgroud)

输出看起来像:

11208 sendto(4, "set 29170397297_-cache-schema 85 0 127240\r\n\257\202\v\0?\0\0\0\2\27\10stdClass\24\7\21\3cid\21\6schema\21\4d\37ata\25\n\247\21\5block\24\6\21\6fields\24\f\21\3bid\24\2\5\21\4type 0\37erial\21\10not null\5\21\6module\24\4\16\7\21\7va\37rchar\21\6length\6@\16\t\5\21\7default\r\21\5de\2lta@\5\16\v\16\f\6 \35\7\16\r\21\0010\21\5t \207C\30@6\2\16\r\r n\4tatus@0\4\21\3int/\7\6\0\21\4size \222\finy\21\6weight\24\3 ;\0\22\300 \6\6region@8\340\5P\5custom\27\300,\17\16\23\16\24\21\nvisibility\340\t\34\7\5pages\24\2 \205\3\4tex@\206 \261\1it \365\0\5\240\0\377y\10\r\21\ftransl!N\2ble %\1ca!a\340\3Q\0\1n\31\vprimary key\24\1\6\0\16\6\21\vunique@\21\ts\24\1\21\3tmd\24\3 \31\0\20 2\v\n\6\2\16\16\21\7index \210\10\1\21\4list\24\5\240\36\0\21 \36\10\26\6\3\16\25\6\4\16\n \1\6\4\21\4name \7\0\na\317\2_ro\252\0\5!$\0\n \3\341\2\23\0\16\340\0\16A\214\2\21\3r!\354@ \v\22\21\10unsigned\5@\332\0\36\213\0\n \213\0\16 l\6%\16!\24\1\16%\271\0%@p\5\16#\16$\21\f\200l\241b@n\2\4\16\6M\2\10\16&@E\4\21\4bod\201_\5\32\16\t\4\16\23B\\\2g\16\34 \30\3info .\0\7a\255\0\200@q!L\5\6forma\201\332B/!d\2\4\16\37 y\0*y\0 \225a;\240\201\2'\21\van\0_\207\200\2\5\16\1\340\0U =@U\1\16\3@\222 \212\2lob@O\n\23\16)\21\6expire@\30\342\0\26\7\21\7create\241\17< \25\0\n\203\1\"\177\0dY\0\22 \305\5\5small\240!a\32\0.\230\0.\240\240\0\1\240\240\3,\21\vb S\2kpo\"\313\2s\24\6!\220\2\t\21\2\241q\0\10 ?\4\21\tno \213\6ort\5\21\fm\";\3ine_A\313\232\241\3\2\5\16#\340\4\16!\345\340\0U\223\340\0'AC\4sourc\202\202\340\3\27\0\v\200\27\0_C\326\340\0074\1\16\21_\240\363\2\1\16\25\340\3\16\r\0\21\vmultipliers\31\0- \223\1\21\t\341\0\30B-\0\1!\10\0003a\253\0005\v\0005ac \327Dz\"\364 …

shell parsing escaping strace

4
推荐指数
1
解决办法
5350
查看次数

当Mysqli发送准备好的查询时,PDO向MySQL发送原始查询,两者都产生相同的结果

我开始知道在使用MySQLi和PDO时预备语句是如何工作的,第一步,我启用了MySQL查询监控,如下所述:我如何查看实时MySQL查询?.然后我创建了以下测试:

使用mysqli:

$stmt = $mysqli->prepare("SELECT * FROM users WHERE username =?")) {
$stmt->bind_param("i", $user);
$user = "''1''";
Run Code Online (Sandbox Code Playgroud)

服务器日志:

  130802 23:39:39   175 Connect   ****@localhost on testdb
    175 Prepare   SELECT * FROM users WHERE username =?
    175 Execute   SELECT * FROM users WHERE username =0
    175 Quit
Run Code Online (Sandbox Code Playgroud)

使用PDO:

  $user = "''1''";
  $sql = 'SELECT * FROM user WHERE uid =?';
  $sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
  $sth->bindParam(1, $user, PDO::PARAM_INT);
Run Code Online (Sandbox Code Playgroud)

服务器日志:

  130802 23:41:42   176 Connect   ****@localhost on testdb
    176 Query SELECT …
Run Code Online (Sandbox Code Playgroud)

php mysql mysqli pdo

3
推荐指数
1
解决办法
1210
查看次数

我怎么知道我的MySQL alter table语句有效?

我正在一个包含3.5亿行的表上运行alter table语句.我怎么知道这个陈述实际上是在做什么而且没有挂?同样,我不想在它完成之前的某个时刻打扰一个声明.特别是在它运行了几个小时之后.

我需要能够在Bash或PERL中编写脚本,因为我的主机是Redhat Linux机器.本案中的陈述是:

ALTER TABLE table_name AUTO_INCREMENT = 1;
Run Code Online (Sandbox Code Playgroud)

mysql

2
推荐指数
1
解决办法
1311
查看次数