Mysql 错误.寻求帮助

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-10
阿里云 MYSQL 总是崩溃,真诚寻求帮助

有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具。前者使用起来比较简便。推荐使用。
1. check table 和 repair table
登陆mysql 终端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出现的结果说Status是OK,则不用修复,如果有Error,可以用:
repair table tabTest;
进行修复,修复之后可以在用check table命令来进行检查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:
myisamchk tablename.MYI
进行检测,如果需要修复的话,可以使用:
myisamchk -of tablename.MYI
关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL服务器没有访问这个数据表,保险的情况下是最好在进行检测时把MySQL服务器Shutdown掉。
-----------------------------
另外可以把下面的命令放在你的rc.local里面启动MySQL服务器前:
[ -x /tmp/mysql.sock ] && /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL监听的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/mysql/mysql.sock,对于使用源码安装则是/tmp/mysql.sock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。
需要注意的时,如果你打算把这条命令放在你的rc.local里面,必须确认在执行这条指令时MySQL服务器必须没有启动!检测修复所有数据库(表)

MYSQL出错代码及出错信息对照

1005:创建表失败
1006:创建数据库失败
1007:数据库已存在,创建数据库失败
1008:数据库不存在,删除数据库失败
1009:不能删除数据库文件导致删除数据库失败
1010:不能删除数据目录导致删除数据库失败
1011:删除数据库文件失败
1012:不能读取系统表中的记录
1020:记录已被其他用户修改
1021:硬盘剩余空间不足,请加大硬盘可用空间
1022:关键字重复,更改记录失败
1023:关闭时发生错误
1024:读文件错误
1025:更改名字时发生错误
1026:写文件错误
1032:记录不存在
1036:数据表是只读的,不能对它进行修改
1037:系统内存不足,请重启数据库或重启服务器
1038:用于排序的内存不足,请增大排序缓冲区
1040:已到达数据库的最大连接数,请加大数据库可用连接数
1041:系统内存不足
1042:无效的主机名
1043:无效连接
1044:当前用户没有访问数据库的权限
1045:不能连接数据库,用户名或密码错误
1048:字段不能为空
1049:数据库不存在
1050:数据表已存在
1051:数据表不存在
1054:字段不存在
1062:字段值重复,入库失败
1065:无效的SQL语句,SQL语句为空
1081:不能建立Socket连接
1114:数据表已满,不能容纳任何记录
1116:打开的数据表太多
1129:数据库出现异常,请重启数据库
1130:连接数据库失败,没有连接数据库的权限
1133:数据库用户不存在
1141:当前用户无权访问数据库
1142:当前用户无权访问数据表
1143:当前用户无权访问数据表中的字段
1146:数据表不存在
1147:未定义用户对数据表的访问权限
1149:SQL语句语法错误
1158:网络错误,出现读错误,请检查网络连接状况
1159:网络错误,读超时,请检查网络连接状况
1160:网络错误,出现写错误,请检查网络连接状况
1161:网络错误,写超时,请检查网络连接状况
1169:字段值重复,更新记录失败
1177:打开数据表失败
1180:提交事务失败
1181:回滚事务失败
1203:当前用户和数据库建立的连接已到达数据库的最大连接数,请增大可用的数据库连接数或重启数据库
1205:加锁超时
1211:当前用户没有创建用户的权限
1216:外键约束检查失败,更新子表记录失败
1217:外键约束检查失败,删除或修改主表记录失败
1226:当前用户使用的资源已超过所允许的资源,请重启数据库或重启服务器
1227:权限不足,您无权进行此操作
1235:MySQL版本过低,不具有本功能
1250:客户端不支持服务器要求的认证协议,请考虑升级客户端。
1005:创建表失败
1006:创建数据库失败
1007:数据库已存在,创建数据库失败
1008:数据库不存在,删除数据库失败
1009:不能删除数据库文件导致删除数据库失败
1010:不能删除数据目录导致删除数据库失败
1011:删除数据库文件失败
1012:不能读取系统表中的记录
1020:记录已被其他用户修改
1021:硬盘剩余空间不足,请加大硬盘可用空间
1022:关键字重复,更改记录失败
1023:关闭时发生错误
1024:读文件错误
1025:更改名字时发生错误
1026:写文件错误
1032:记录不存在
1036:数据表是只读的,不能对它进行修改
1037:系统内存不足,请重启数据库或重启服务器
1038:用于排序的内存不足,请增大排序缓冲区
1040:已到达数据库的最大连接数,请加大数据库可用连接数
1041:系统内存不足
1042:无效的主机名
1043:无效连接
1044:当前用户没有访问数据库的权限
1045:不能连接数据库,用户名或密码错误
1048:字段不能为空
1049:数据库不存在
1050:数据表已存在
1051:数据表不存在
1054:字段不存在
1065:无效的SQL语句,SQL语句为空
1081:不能建立Socket连接
1114:数据表已满,不能容纳任何记录
1116:打开的数据表太多
1129:数据库出现异常,请重启数据库
1130:连接数据库失败,没有连接数据库的权限
1133:数据库用户不存在
1141:当前用户无权访问数据库
1142:当前用户无权访问数据表
1143:当前用户无权访问数据表中的字段
1146:数据表不存在
1147:未定义用户对数据表的访问权限
1149:SQL语句语法错误
1158:网络错误,出现读错误,请检查网络连接状况
1159:网络错误,读超时,请检查网络连接状况
1160:网络错误,出现写错误,请检查网络连接状况
1161:网络错误,写超时,请检查网络连接状况
1062:字段值重复,入库失败
1169:字段值重复,更新记录失败
1177:打开数据表失败
1180:提交事务失败
1181:回滚事务失败
1203:当前用户和数据库建立的连接已到达数据库的最大连接数,请增大可用的数据库连接数或重启数据库
1205:加锁超时
1211:当前用户没有创建用户的权限
1216:外键约束检查失败,更新子表记录失败
1217:外键约束检查失败,删除或修改主表记录失败
1226:当前用户使用的资源已超过所允许的资源,请重启数据库或重启服务器
1227:权限不足,您无权进行此操作
1235:MySQL版本过低,不具有本功能
1016错误:文件无法打开,使用后台修复或者使用phpmyadmin进行修复。
1044错误:数据库用户权限不足,请联系空间商解决
1045错误:数据库服务器/数据库用户名/数据库名/数据库密码错误,请联系空间商检查帐户。
1054错误:程序文件跟数据库有冲突,请使用正确的程序文件上传上去覆盖。
1146错误:数据表缺失,请恢复备份数据.
2002错误:服务器端口不对,请咨询空间商正确的端口。
2003错误:mysql服务没有启动,请启动该服务

  本章列出了当你用任何主机语言调用MySQL时可能出现的错误。首先列出了服务器错误消息。其次列出了客户端程序消息
  服务器错误信息来自下述源文件:
  · 错误消息信息列在share/errmsg.txt文件中。“%d”和“%s”分别代表编号和字符串,显示时,它们将被消息值取代。

  错误值列在share/errmsg.txt文件中,用于生成include/mysqld_error.h和include/mysqld_ername.h

  MySQL源文件中的定义。
  · SQLSTATE值列在share/errmsg.txt文件中,用于生成include/sql_state.h

  MySQL源文件中的定义。

  由于更新很频繁,这些文件中可能包含这里未列出的额外错误消息。

  · 错误:1000 SQLSTATE:
  HY000 (ER_HASHCHK)

  消息:hashchk

  · 错误:1001 SQLSTATE: HY000
  (ER_NISAMCHK)

  消息:isamchk

  · 错误:1002 SQLSTATE: HY000 (ER_NO)

  消息:NO

  · 错误:1003 SQLSTATE: HY000 (ER_YES)

  消息:YES

  · 错误:1004 SQLSTATE: HY000 (ER_CANT_CREATE_FILE)

  消息:无法创建文件'%s'
  (errno: %d)

  · 错误:1005 SQLSTATE: HY000 (ER_CANT_CREATE_TABLE)

  消息:无法创建表'%s' (errno: %d)

  · 错误:1006 SQLSTATE: HY000
  (ER_CANT_CREATE_DB)

  消息:无法创建数据库'%s' (errno: %d)

  · 错误:1007
  SQLSTATE: HY000 (ER_DB_CREATE_EXISTS)

  消息:无法创建数据库'%s',数据库已存在。

  ·
  错误:1008 SQLSTATE: HY000 (ER_DB_DROP_EXISTS)

  消息:无法撤销数据库'%s',数据库不存在。

  · 错误:1009 SQLSTATE: HY000 (ER_DB_DROP_DELETE)

  消息:撤销数据库时出错(无法删除'%s',errno: %d)

  · 错误:1010 SQLSTATE: HY000
  (ER_DB_DROP_RMDIR)

  消息:撤销数据库时出错(can't rmdir '%s', errno: %d)

  ·
  错误:1011 SQLSTATE: HY000 (ER_CANT_DELETE_FILE)

  消息:删除'%s'时出错 (errno: %d)

  · 错误:1012 SQLSTATE: HY000 (ER_CANT_FIND_SYSTEM_REC)

  消息:无法读取系统表中的记录。

  · 错误:1013 SQLSTATE: HY000 (ER_CANT_GET_STAT)

  消息:无法获取'%s'的状态(errno: %d)

  · 错误:1014 SQLSTATE: HY000
  (ER_CANT_GET_WD)

  消息:无法获得工作目录(errno: %d)

  · 错误:1015 SQLSTATE:
  HY000 (ER_CANT_LOCK)

  消息:无法锁定文件(errno: %d)

  · 错误:1016 SQLSTATE:
  HY000 (ER_CANT_OPEN_FILE)

  消息:无法打开文件:'%s' (errno: %d)

  · 错误:1017
  SQLSTATE: HY000 (ER_FILE_NOT_FOUND)

  消息:无法找到文件: '%s' (errno: %d)

  · 错误:1018 SQLSTATE: HY000 (ER_CANT_READ_DIR)

  消息:无法读取'%s'的目录
  (errno: %d)

  · 错误:1019 SQLSTATE: HY000 (ER_CANT_SET_WD)

  消息:无法为'%s'更改目录 (errno: %d)

  · 错误:1020 SQLSTATE: HY000
  (ER_CHECKREAD)

  消息:自上次读取以来表'%s'中的记录已改变。

  · 错误:1021 SQLSTATE: HY000
  (ER_DISK_FULL)

  消息:磁盘满(%s);等待某人释放一些空间...

  · 错误:1022 SQLSTATE:
  23000 (ER_DUP_KEY)

  消息:无法写入;复制表'%s'的 键。

  · 错误:1023 SQLSTATE: HY000
  (ER_ERROR_ON_CLOSE)

  消息:关闭'%s'时出错 (errno: %d)

  · 错误:1024 SQLSTATE:
  HY000 (ER_ERROR_ON_READ)

  消息:读取文件'%s'时出错 (errno: %d)

  · 错误:1025
  SQLSTATE: HY000 (ER_ERROR_ON_RENAME)

  消息:将'%s'重命名为'%s'时出错 (errno: %d)

  · 错误:1026 SQLSTATE: HY000 (ER_ERROR_ON_WRITE)

  消息:写入文件'%s'时出错
  (errno: %d)

  · 错误:1027 SQLSTATE: HY000 (ER_FILE_USED)

  消息:'%s'已锁定,拒绝更改。

  · 错误:1028 SQLSTATE: HY000 (ER_FILSORT_ABORT)

  消息:分类失败

  · 错误:1029 SQLSTATE: HY000 (ER_FORM_NOT_FOUND)

  消息:对于'%s',视图'%s'不存在。

  · 错误:1030 SQLSTATE: HY000 (ER_GET_ERRNO)

  消息:从存储引擎中获得错误%d。

  · 错误:1031 SQLSTATE: HY000 (ER_ILLEGAL_HA)

  消息:关于'%s'的表存储引擎不含该选项。

  · 错误:1032 SQLSTATE: HY000
  (ER_KEY_NOT_FOUND)

  消息:无法在'%s'中找到记录。

  · 错误:1033 SQLSTATE: HY000
  (ER_NOT_FORM_FILE)

  消息:文件中的不正确信息:'%s'

  · 错误:1034 SQLSTATE: HY000
  (ER_NOT_KEYFILE)

  消息:对于表'%s', 键文件不正确,请尝试修复。

  · 错误:1035 SQLSTATE:
  HY000 (ER_OLD_KEYFILE)

  消息:旧的键文件,对于表'%s',请修复之!

  · 错误:1036
  SQLSTATE: HY000 (ER_OPEN_AS_READONLY)

  消息:表'%s'是只读的。

  · 错误:1037
  SQLSTATE: HY001 (ER_OUTOFMEMORY)

  消息:内存溢出,重启服务器并再次尝试(需要%d字节)。

  ·
  错误:1038 SQLSTATE: HY001 (ER_OUT_OF_SORTMEMORY)

  消息:分类内存溢出,增加服务器的分类缓冲区大小。

  · 错误:1039 SQLSTATE: HY000 (ER_UNEXPECTED_EOF)

  消息:读取文件'%s'时出现意外EOF (errno: %d)

  · 错误:1040 SQLSTATE: 08004
  (ER_CON_COUNT_ERROR)

  消息:连接过多。

  · 错误:1041 SQLSTATE: HY000
  (ER_OUT_OF_RESOURCES)

  消息:内存溢出,请检查是否mysqld或其他进程使用了所有可用内存,如不然,或许应使用'ulimit'允许mysqld使用更多内存,或增加交换空间的大小。

  · 错误:1042 SQLSTATE: 08S01 (ER_BAD_HOST_ERROR)

  消息:无法获得该地址给出的主机名。

  · 错误:1043 SQLSTATE: 08S01 (ER_HANDSHAKE_ERROR)

  消息:不良握手

  ·
  错误:1044 SQLSTATE: 42000 (ER_DBACCESS_DENIED_ERROR)

  消息:拒绝用户'%s'@'%s'访问数据库'%s'。

  · 错误:1045 SQLSTATE: 28000
  (ER_ACCESS_DENIED_ERROR)

  消息:拒绝用户'%s'@'%s'的访问(使用密码:%s)

  · 错误:1046
  SQLSTATE: 3D000 (ER_NO_DB_ERROR)

  消息:未选择数据库。

  · 错误:1047 SQLSTATE:
  08S01 (ER_UNKNOWN_COM_ERROR)

  消息:未知命令。

  · 错误:1048 SQLSTATE: 23000
  (ER_BAD_NULL_ERROR)

  消息:列'%s'不能为空。

  · 错误:1049 SQLSTATE: 42000
  (ER_BAD_DB_ERROR)

  消息:未知数据库'%s'。

  · 错误:1050 SQLSTATE: 42S01
  (ER_TABLE_EXISTS_ERROR)

  消息:表'%s'已存在。

  · 错误:1051 SQLSTATE: 42S02
  (ER_BAD_TABLE_ERROR)

  消息:未知表'%s'。

  · 错误:1052 SQLSTATE: 23000
  (ER_NON_UNIQ_ERROR)

  消息:%s中的列'%s'不明确。

  · 错误:1053 SQLSTATE: 08S01
  (ER_SERVER_SHUTDOWN)

  消息:在操作过程中服务器关闭。

  · 错误:1054 SQLSTATE: 42S22
  (ER_BAD_FIELD_ERROR)

  消息:'%s'中的未知列'%s'。

  · 错误:1055 SQLSTATE: 42000
  (ER_WRONG_FIELD_WITH_GROUP)

  消息:'%s'不在GROUP BY中。

  · 错误:1056
  SQLSTATE: 42000 (ER_WRONG_GROUP_FIELD)

  消息:无法在'%s'上创建组。

  · 错误:1057
  SQLSTATE: 42000 (ER_WRONG_SUM_SELECT)

  消息:语句中有sum函数和相同语句中的列。

  ·
  错误:1058 SQLSTATE: 21S01 (ER_WRONG_VALUE_COUNT)

  消息:列计数不匹配值计数。

  ·
  错误:1059 SQLSTATE: 42000 (ER_TOO_LONG_IDENT)

  消息:ID名称'%s'过长。

  ·
  错误:1060 SQLSTATE: 42S21 (ER_DUP_FIELDNAME)

  消息:重复列名'%s'。

  ·
  错误:1061 SQLSTATE: 42000 (ER_DUP_KEYNAME)

  消息:重复键名称'%s'。

  · 错误:1062
  SQLSTATE: 23000 (ER_DUP_ENTRY)

  消息:键%d的重复条目'%s'。

  · 错误:1063
  SQLSTATE: 42000 (ER_WRONG_FIELD_SPEC)

  消息:对于列'%s',列分类符不正确。

  ·
  错误:1064 SQLSTATE: 42000 (ER_PARSE_ERROR)

  消息:在行%d上,%s靠近'%s'。

  ·
  错误:1065 SQLSTATE: 42000 (ER_EMPTY_QUERY)

  消息:查询为空。

  · 错误:1066
  SQLSTATE: 42000 (ER_NONUNIQ_TABLE)

  消息:非唯一的表/别名:'%s'

  · 错误:1067
  SQLSTATE: 42000 (ER_INVALID_DEFAULT)

  消息:关于'%s'的无效默认值。

  · 错误:1068
  SQLSTATE: 42000 (ER_MULTIPLE_PRI_KEY)

  消息:定义了多个主键。

  · 错误:1069
  SQLSTATE: 42000 (ER_TOO_MANY_KEYS)

  消息:指定了过多键:允许的最大键数是%d。

  ·
  错误:1070 SQLSTATE: 42000 (ER_TOO_MANY_KEY_PARTS)

  消息:指定了过多键部分:允许的最大键部分是%d。

  · 错误:1071 SQLSTATE: 42000 (ER_TOO_LONG_KEY)

  消息:指定的键过长,最大键长度是%d字节。

  · 错误:1072 SQLSTATE: 42000
  (ER_KEY_COLUMN_DOES_NOT_EXITS)

  消息:键列'%s'在表中不存在。

  · 错误:1073
  SQLSTATE: 42000 (ER_BLOB_USED_AS_KEY)

  消息:BLOB列'%s'不能与已使用的表类型用在 键说明中。

  · 错误:1074 SQLSTATE: 42000 (ER_TOO_BIG_FIELDLENGTH)

  消息:对于列'%s',列长度过大 (max = %d),请使用BLOB或TEXT取而代之。