C# Mysql-非常奇怪的行为:查询在本地工作,但对某些人来说不能在远程服务器上工作
我有一件非常奇怪的事情,我们无法理解或修复 简短版本: 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,显示了相同的错误。 有什么想法吗= 表结构如下所示。排除列消息时,它始终有效,因此它与该列有关C# Mysql-非常奇怪的行为:查询在本地工作,但对某些人来说不能在远程服务器上工作,c#,mysql,mysql-connector,C#,Mysql,Mysql Connector,我有一件非常奇怪的事情,我们无法理解或修复 简短版本: MySQL中一些非常简单的SELECT查询会挂起进行查询的整个应用程序/程序。然而,这并不一致。如果我在本地使用完全相同的MySQL版本,使用完全相同的表结构和完全相同的数据,则查询工作正常。但是当通过HeidiSQL在远程服务器上执行完全相同的查询时,它会挂起 我们正在用C语言编写代码,我们在那里也有完全相同的行为 长版本: 我们有两个远程服务器,REMOTE1和REMOTE2 REMOTE1拥有MySQL 5.1.51-communit
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;