我的查询很简单:EXPLAIN SELECT * FROM de_company WHERE username='hzsanli';(username='hzsanli'这条记录在数据表里是存在的;)
显示如下:
id select_type TABLE  TYPE possible_keys key_len ref ROWS extra                                                                                
1   SIMPLE  de_company  const  username        62      const   SELECT LENGTH(`username`),`username` FROM de_company ORDER BY LENGTH(`username`) ASC LIMIT 200;显示有username为空的记录;数据结构如下:create table
CREATE TABLE `de_company` (
   `company_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `userid` bigint(20) unsigned NOT NULL DEFAULT '0',
   `username` varchar(30) NOT NULL DEFAULT '',
   `groupid` smallint(4) unsigned NOT NULL DEFAULT '0',
   `company` varchar(100) NOT NULL DEFAULT '',
   `level` tinyint(1) unsigned NOT NULL DEFAULT '0',
   `validated` tinyint(1) unsigned NOT NULL DEFAULT '0',
   `validator` varchar(100) NOT NULL DEFAULT '',
   `validtime` int(10) unsigned NOT NULL DEFAULT '0',
   `vip` smallint(2) unsigned NOT NULL DEFAULT '0',
   `vipt` smallint(2) unsigned NOT NULL DEFAULT '0',
   `vipr` smallint(2) NOT NULL DEFAULT '0',
   `type` varchar(100) NOT NULL DEFAULT '贸易商',
   `catid` varchar(100) NOT NULL DEFAULT '',
   `catids` varchar(100) NOT NULL DEFAULT '',
   `areaid` int(10) unsigned NOT NULL DEFAULT '2',
   `mode` varchar(100) NOT NULL DEFAULT '',
   `capital` float unsigned NOT NULL DEFAULT '5',
   `regunit` varchar(15) NOT NULL DEFAULT '人民币',
   `size` varchar(100) NOT NULL DEFAULT '',
   `regyear` varchar(4) NOT NULL DEFAULT '',
   `regcity` varchar(30) NOT NULL DEFAULT '',
   `sell` varchar(255) NOT NULL DEFAULT '',
   `buy` varchar(255) NOT NULL DEFAULT '',
   `business` varchar(255) NOT NULL DEFAULT '',
   `telephone` varchar(50) NOT NULL DEFAULT '',
   `fax` varchar(50) NOT NULL DEFAULT '',
   `mail` varchar(50) NOT NULL DEFAULT '',
   `address` varchar(255) NOT NULL DEFAULT '',
   `postcode` varchar(20) NOT NULL DEFAULT '',
   `homepage` varchar(255) NOT NULL DEFAULT '',
   `fromtime` int(10) unsigned NOT NULL DEFAULT '0',
   `totime` int(10) unsigned NOT NULL DEFAULT '0',
   `styletime` int(10) unsigned NOT NULL DEFAULT '0',
   `thumb` varchar(255) NOT NULL DEFAULT '',
   `introduce` varchar(255) NOT NULL DEFAULT '暂无简介',
   `hits` int(10) unsigned NOT NULL DEFAULT '0',
   `keyword` varchar(255) NOT NULL DEFAULT '',
   `banner` varchar(255) NOT NULL DEFAULT '',
   `template` varchar(30) NOT NULL DEFAULT '',
   `skin` varchar(30) NOT NULL DEFAULT '',
   `domain` varchar(100) NOT NULL DEFAULT '',
   `icp` varchar(100) NOT NULL DEFAULT '',
   `linkurl` varchar(255) NOT NULL DEFAULT '',
   `user_id` char(36) NOT NULL,
   `simple` varchar(200) NOT NULL DEFAULT '暂无简写',
   PRIMARY KEY (`company_id`),
   UNIQUE KEY `userid` (`userid`),
   UNIQUE KEY `username` (`username`),
   KEY `company` (`company`)
 ) ENGINE=MyISAM AUTO_INCREMENT=269165 DEFAULT CHARSET=gbk COMMENT='公司'真不知道数据表错在哪里了
PS:其他字段查询是可以显示的;如果执行update de_company set username='test' where username='hzsanli'这样执行是成功的。

解决方案 »

  1.   

    应该是这条记录的在坏块上   导致某些字段可能坏掉  所以select不出来
      

  2.   

    我的不是mysqld死掉,我是用sqlyog管理mysql数据库的,在sqlyog里查询就未响应了,但是服务器上的mysqld是没有死掉的,还是正常运行的,在这条查询运行的时候我在服务器上show processlist发现时sleep进程查询语句为null的,当我强制关掉sqlyog的时候这个sql进程就没了
      

  3.   

    那你直接mysql命令行方式执行语句是什么结果?
      

  4.   

    直接在服务器中用sql命令执行是没有问题的
      

  5.   

    但是不可能面对同样数量级的表,同样用sqlyog管理,一个执行sql代码ok,一个就直接sqlyog挂掉啊,我用的sqlyog版本是企业版 v 8.14
      

  6.   

    那显然已经不是MYSQL的问题了,你的SQLYOG的问题了。
      

  7.   


    可是sqlyog查询其他的表,同样数量级的都没有挂掉,这岂不是太奇怪了?
      

  8.   

    explain 一下看看,说不定别的表有索引啥的。我的sqlyog也死过,通常都是遇到数量级较大的表的时候没有索引,就死掉了。如果要是表坏掉了,sqlyog是会报错的
      

  9.   

    我已经 explain 过了,你没有仔细看我的发帖,索引也检查了,现在还是不知道问题在那里
      

  10.   

    mysqld在,就说明mysql没死。你用:EXPLAIN SELECT * FROM de_company WHERE username='aaa',
    这个aaa是表中另一个存在的名字,来查一下,会如何?再分析一下aaa 和 'hzsanli' 有什么区别,可能会有些线索。
      

  11.   

    可能是SELECT 出来的记录里有什么东西sqlyog处理不了的,导致其当了
    你就加limit xx,xx,一行行select出来吧, 看到底哪行有问题
      

  12.   

    我按照你的查了一下,果然发现,开始的都可以查到,当我查到173行的时候,sqlyog就会挂掉,然后从173行以后查询都会挂掉,这是什么原因呢,我这个字段的类型是varchar(20)的,这条记录也对比了一下,没有什么特殊的地方啊
      

  13.   

    区别就是173行以后,全都是一查sqlyog就当掉
      

  14.   


    除了username这个字段外,还有一个字段也存在问题userid,这个字段是存用户的账号序号的,bigint(20) unsigned类型的,这个键我建立了唯一性索引的,username字段也建立了唯一性索引的
      

  15.   

    username、userid是什么内容,字符集是什么,我也用SQLYOG(9.2),没有出现过此问题
      

  16.   

    我用这个命令查:SHOW FULL COLUMNS FROM de_company;
    "userid","bigint(20) unsigned",\N,"NO","UNI","0","","select,insert,update,references",""
    "username","varchar(30)","gbk_chinese_ci","NO","UNI","","","select,insert,update,references",""
      

  17.   

    最新答案,我升级了sqlyog的版本到7.11就可以了,所有的查询都没有问题