我的mysql表一查询就挂掉,为什么呢?
时间:2011-09-06
来源:互联网
我的查询很简单: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'这样执行是成功的。
显示如下:
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'这样执行是成功的。
作者: salley_2010 发布时间: 2011-09-06
检查一下错误日志。
引用
5.11.1. 错误日志
错误日志文件包含了当mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。
如果mysqld莫名其妙地死掉并且mysqld_safe需要重新启动它,mysqld_safe在错误日志中写入一条restarted mysqld消息。如果mysqld注意到需要自动检查或着修复一个表,则错误日志中写入一条消息。
在一些操作系统中,如果mysqld死掉,错误日志包含堆栈跟踪信息。跟踪信息可以用来确定mysqld死掉的地方。参见E.1.4节,“使用堆栈跟踪”。
可以用--log-error[=file_name]选项来指定mysqld保存错误日志文件的位置。如果没有给定file_name值,mysqld使用错误日志名host_name.err 并在数据目录中写入日志文件。如果你执行FLUSH LOGS,错误日志用-old重新命名后缀并且mysqld创建一个新的空日志文件。(如果未给出--log-error选项,则不会重新命名)。
如果不指定--log-error,或者(在Windows中)如果你使用--console选项,错误被写入标准错误输出stderr。通常标准输出为你的终端。
在Windows中,如果未给出--console选项,错误输出总是写入.err文件。
5.11.1. 错误日志
错误日志文件包含了当mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。
如果mysqld莫名其妙地死掉并且mysqld_safe需要重新启动它,mysqld_safe在错误日志中写入一条restarted mysqld消息。如果mysqld注意到需要自动检查或着修复一个表,则错误日志中写入一条消息。
在一些操作系统中,如果mysqld死掉,错误日志包含堆栈跟踪信息。跟踪信息可以用来确定mysqld死掉的地方。参见E.1.4节,“使用堆栈跟踪”。
可以用--log-error[=file_name]选项来指定mysqld保存错误日志文件的位置。如果没有给定file_name值,mysqld使用错误日志名host_name.err 并在数据目录中写入日志文件。如果你执行FLUSH LOGS,错误日志用-old重新命名后缀并且mysqld创建一个新的空日志文件。(如果未给出--log-error选项,则不会重新命名)。
如果不指定--log-error,或者(在Windows中)如果你使用--console选项,错误被写入标准错误输出stderr。通常标准输出为你的终端。
在Windows中,如果未给出--console选项,错误输出总是写入.err文件。
作者: ACMAIN_CHM 发布时间: 2011-09-06
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28