Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Mysql-非常奇怪的行为:查询在本地工作,但对某些人来说不能在远程服务器上工作_C#_Mysql_Mysql Connector - Fatal编程技术网

C# Mysql-非常奇怪的行为:查询在本地工作,但对某些人来说不能在远程服务器上工作

C# Mysql-非常奇怪的行为:查询在本地工作,但对某些人来说不能在远程服务器上工作,c#,mysql,mysql-connector,C#,Mysql,Mysql Connector,我有一件非常奇怪的事情,我们无法理解或修复 简短版本: MySQL中一些非常简单的SELECT查询会挂起进行查询的整个应用程序/程序。然而,这并不一致。如果我在本地使用完全相同的MySQL版本,使用完全相同的表结构和完全相同的数据,则查询工作正常。但是当通过HeidiSQL在远程服务器上执行完全相同的查询时,它会挂起 我们正在用C语言编写代码,我们在那里也有完全相同的行为 长版本: 我们有两个远程服务器,REMOTE1和REMOTE2 REMOTE1拥有MySQL 5.1.51-communit

我有一件非常奇怪的事情,我们无法理解或修复

简短版本: MySQL中一些非常简单的SELECT查询会挂起进行查询的整个应用程序/程序。然而,这并不一致。如果我在本地使用完全相同的MySQL版本,使用完全相同的表结构和完全相同的数据,则查询工作正常。但是当通过HeidiSQL在远程服务器上执行完全相同的查询时,它会挂起

我们正在用C语言编写代码,我们在那里也有完全相同的行为

长版本: 我们有两个远程服务器,REMOTE1和REMOTE2

REMOTE1拥有MySQL 5.1.51-community

REMOTE2有MySQL 5.0.27-community-nt

我在本地运行MySQL 5.1.36-community

有时,在REMOTE1上执行下面列出的特定查询时,执行查询的应用程序会挂起

例如,当我通过HeidiSQL从我的计算机执行查询时,就会发生这种情况。 当我的工作伙伴使用HeidiSQL做完全相同的事情时,我们在同一个网络上。但是,如果我的工作伙伴不是从HeidiSQL而是从我们自己的C程序执行相同的查询,那么它也会挂起

我们自己的程序是用C编写的,我们可以清楚地看到,当通过MySQL连接器发送查询时,它永远不会从该方法返回,因此挂起

现在,在REMOTE2上执行完全相同的查询时,无论是从HeidiSQL还是从C代码,它都可以毫无问题地工作。在REMOTE2上执行相同查询时,我或我的工作伙伴都没有任何问题

在本地测试时,它不会挂起,也不会通过C或HeidiSQL挂起

另请注意:

我们将REMOTE1上的MySQL服务器升级到了5.1.51,因为以前的版本也存在这个问题 我的工作伙伴有两台计算机,其中一台有HeidiSQL版本5.0.0.3272,另一台有版本5.1.0.3316。在这两台计算机上,他都可以手动执行查询,并在REMOTE1上运行,但不能通过C代码。 在C代码中,我们尝试了3种不同的连接器,MySQL连接器5.x.x、6.1.5和6.3.5;似乎什么都不管用。 我更新到Heidisql5.1.0.3569,显示了相同的错误。 有什么想法吗=

表结构如下所示。排除列消息时,它始终有效,因此它与该列有关

CREATE TABLE `sammessages` (
 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
 `externalMessageId` BIGINT(10) UNSIGNED NULL DEFAULT NULL,
 `timeStamp` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
 `message` TEXT NULL COLLATE 'latin1_general_ci',
 `direction` SET('INCOMING','OUTGOING','EXCEPTION','LOG') NULL DEFAULT NULL,
 `central` TINYINT(3) UNSIGNED NULL DEFAULT NULL,
 `isCleaned` TINYINT(1) UNSIGNED NULL DEFAULT '0',
 PRIMARY KEY (`id`),
 INDEX `NewIndex` (`timeStamp`),
 INDEX `central_timestamp` (`central`, `timeStamp`),
 INDEX `direction` (`direction`)
)
ENGINE=InnoDB
ROW_FORMAT=DEFAULT
AUTO_INCREMENT=65352
以及查询:

SELECT message FROM sammessages WHERE central='9' AND direction='INCOMING' AND timestamp >= '2010-10-24 04:00:00' AND timestamp <= '2010-10-24 23:00:00' AND message LIKE '%700%' AND message LIKE '%+%'

在mysql中,您尝试过吗

grant all privileges on mydbname.* to mydbuser@'%' identified by 'mydbpasswd'


在更新过程中,应用程序的其他部分是否有可能锁定表?您的查询可能会碰到该锁,但由于它只是偶尔发生,所以症状似乎是查询来自的系统。真的,这只是暗中捅了一刀,但有些东西值得一看。

这不是特权问题。在执行这些查询时,我们都使用相同的帐户。它适用于我的工作伙伴,也适用于我我们都是远程的,使用相同的用户/通行证…您必须指定机器的IP地址。Ted@192.168.1.110, Ted@localhost和Ted@127.0.0.1有三个不同的帐户。是的,我们可以远程登录并做很多事情,但是上面描述的某些问题不起作用。所以这不是一个隐私问题,答案是Thx。但是,它不可能是应用程序,因为同一个应用程序Heidi och C在不同的计算机上表现不同。。。
grant all privileges on mydbname.* to mydbuser@'138.239.201.234' identified by 'mydbpasswd' with grant option;