[转帖]Discuz!论坛程序MySql数据常见错误提示以及解决方案_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2534 | 回复: 0   主题: [转帖]Discuz!论坛程序MySql数据常见错误提示以及解决方案        下一篇 
koei666
注册用户
等级:新兵
经验:61
发帖:63
精华:0
注册:2012-1-9
状态:离线
发送短消息息给koei666 加好友    发送短消息息给koei666 发消息
发表于: IP:您无权察看 2015-3-19 11:29:38 | [全部帖] [楼主帖] 楼主

MySQL 常见错误提示的对照表
整理了一些常见的 MySQL 错误提示,以下是 Errno 的错误代表:

130 :文件格式不正确,可以尝试一下使用 repair.php 来修复,如果再不能的话就只好恢复相关的数据了(还不是很清楚错误的状况)

145  :文件无法打开,使用 repair.php 修复

1005:创建表失败。

1006:创建数据库失败。

1007:数据库已存在,创建数据库失败。

1008:数据库不存在,删除数据库失败。

1009:不能删除数据库文件导致删除数据库失败。

1010:不能删除数据目录导致删除数据库失败。

1011:删除数据库文件失败。

1012:不能读取系统表中的记录。

1016:文件无法打开,使用后台修复或者使用 phpmyadmin 进行修复。

1017:服务器非法关机,导致该文件损坏.

1020:记录已被其他用户修改。

1021:硬盘剩余空间不足,请加大硬盘可用空间。

1022:关键字重复,更改记录失败。

1023:关闭时发生错误。

1024:读文件错误。

1025:更改名字时发生错误。

1026:写文件错误。

1030:可能是服务器不稳定.

1032:记录不存在。

1036:数据表是只读的,不能对它进行修改。

1037:系统内存不足,请重启数据库或重启服务器。

1038:用于排序的内存不足,请增大排序缓冲区。

1040:已到达数据库的最大连接数,请加大数据库可用连接数。

1041:系统内存不足。

1042:无效的主机名。

1043:无效连接。

1044:数据库用户权限不足,请联系空间商解决。

1045:数据库服务器/数据库用户名/数据库名/数据库密码错误,请联系空间商检查帐户。

1046:没有选择数据库。

1048:字段不能为空。

1049:数据库不存在。

1050:数据表已存在。

1051:数据表不存在。

1054:字段不存在或程序文件跟数据库有冲突,请使用正确的程序文件上传上去覆盖。

1060:字段重复,导致无法插入这个字段。

1062:字段值重复,入库失败。

1064:MySQL 不支持错误提示中的编码.

1065:无效的 SQL 语句,SQL 语句为空。

1067:MySQL 版本为 5,不支持空的默认值。

1081:不能建立 Socket 连接。

1114:数据表已满,不能容纳任何记录。

1115:设置的字符集在 MySQL 并没有支持。

1116:打开的数据表太多。

1129:数据库出现异常,请重启数据库。

1130:连接数据库失败,没有连接数据库的权限。

1133:数据库用户不存在。

1135:可能是内存不足够,请联系空间商解决。

1141:当前用户无权访问数据库。

1142:当前用户无权访问数据表。

1143:当前用户无权访问数据表中的字段。

1146:数据表缺失,请恢复备份数据。

1147:未定义用户对数据表的访问权限。

1149:SQL 语句语法错误。

1158:网络错误,出现读错误,请检查网络连接状况。

1159:网络错误,读超时,请检查网络连接状况。

1160:网络错误,出现写错误,请检查网络连接状况。

1161:网络错误,写超时,请检查网络连接状况。

1169:字段值重复,更新记录失败。

1177:打开数据表失败。

1180:提交事务失败。

1181:回滚事务失败。

1193:不支持字符集限定(SET NAMES).

1203:当前用户和数据库建立的连接已到达数据库的最大连接数,请增大可用的数据库连接数或重启数据库。

1205:加锁超时。

1211:当前用户没有创建用户的权限。

1216:外键约束检查失败,更新子表记录失败。

1217:外键约束检查失败,删除或修改主表记录失败。

1226:当前用户使用的资源已超过所允许的资源,请重启数据库或重启服务器。

1227:权限不足,您无权进行此操作。

1235:MySQL 版本过低,不具有本功能。

1251:Client 不能支持 authentication protocol 的要求.

1267:不合法的混合字符集.

2002:服务器端口不对,请咨询空间商正确的端口。

2003:MySQL 服务没有启动,请启动该服务。

2013:远程连接数据库是有时会有这个问题,MySQL 服务器在执行一条 SQL 语句的时候失去了连接造成的。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[Discuz!] MySQL Error Report 1017错误

There seems to have been a problem with the database of your Discuz! Board
Discuz! info: MySQL Query Error
Time: 2005-12-19 3:30am
Script: /bbs/rss.php
SQL: SELECT * FROM cdb_rsscaches WHERE fid IN (28) ORDER BY dateline DESC LIMIT
20
Error:?Can't find file: 'cdb_rsscaches.MYD' (errno: 2)
Errno.:?1017
Please check-up your MySQL server and forum scripts, similar errors will not be
reported again in recent 24 hours
If you have troubles in solving this problem, please visit Discuz! Community


解决方案:
错误分析:服务器非法关机,有可能会对部分数据库造成一定影响。
一般运行会报错
**.MYD不能打开。

Can't find file: '***.MYI'


解决方法:用你下载的论坛压缩包里面utilities目录下的repair.php修复一下
具体方法:上传repair.php到论坛根目录下,然后在浏览器运行
http://你的论坛地址/repair.php
一般点击第一个链接“repair.php?html=1&check=1”就可以修复了,
如果不能修复可以尝试点击第二个连接“repair.php?check=1&iterations=5”
就可以了。
温馨提示:修复完表操作以后一定记得要从服务器删除这个文件repair.php
-----------------------------------------------------------------------------------------------------------------------
Errno.: 1030,无法用repair修复

Discuz! info: MySQL Query Error
User: admin
Time: 2004-3-12 2:27pm
Script: /viewthread.php
SQL: SELECT p.*, a.aid AS aaid, a.creditsrequire, a.filetype, a.filename, a.attachment, a.filesize, a.downloads, m.uid, m.username, m.gender, m.status, m.regdate, m.lastvisit, m.postnum, m.credit, m.email, m.site, m.icq, m.oicq, m.yahoo, m.msn, m.location, m.avatar, m.signature, m.customstatus, m.showemail, max(zz.lastactivity) as lastactivity
FROM cdb_posts p LEFT JOIN cdb_members m ON m.username=p.author LEFT JOIN cdb_sessions zz ON zz.username=m.username LEFT JOIN cdb_attachments a ON p.aid<>'0' AND p.aid=a.aid WHERE p.tid='53' GROUP BY p.pid ORDER BY dateline LIMIT 0, 10
Error: Got error 28 from table handler
Errno.: 1030
An error report has been dispatched to our administrator.


解决方案:
服务器非法重启造成.可以去电空间商.或者重新安装次论坛
-----------------------------------------------------------------------------------------------------------------------
出现 Errno: 1062 的解决方法
出现原因1:
通常出现这类 Errno: 1062 的问题都是因为相关的数据表没有把 auto-increcement 属性给添加。(不是每个 Errno: 1062 都是这个原因)
出现问题的例子

SQL: INSERT INTO 0516cdb_posts (fid, tid, first, author, authorid, subject, dateline, message, useip, invisible, usesig, htmlon, bbcodeoff, smileyoff, parseurloff, attachment)
VALUES ('34', '317', '0', '叶子', '3', '', '1137052398', '121212', '58.218.22.136', '0', '1', '0', '-1', '-1', '', '0')
Error: Duplicate entry '17258' for key 1
Errno.: 1062


原因是因为 cdb_posts 的数据表里的属性没有添加 auto-increcement 所导致。

解决方法:

ALTER TABLE `cdb_posts` CHANGE `pid` `pid` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT;


出现像例子的问题就需要看一看到底是那个数据表没有加上 auto-increcement 

在例子中的 

INSERT INTO 0516cdb_posts (fid, tid, first, author, authorid, subject, dateline, message, useip, invisible, usesig, htmlon, bbcodeoff, smileyoff, parseurloff, attachment)


是 cdb_posts 的没有加上属性没有添加 auto-increcement
如何升级这些数据?
到后台“数据库”里的“数据库升级”,然后把相关的代码贴进,按“提交”。

以下是各类的 auto-increcement 数据表,大家可以根据问题的数据表进行升级。
cdb_ 是默认的表名前缀,如果不同大家可以自行修改。

cdb_adminnotesCODE:
ALTER TABLE `cdb_adminnotes` CHANGE `id` `id` MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT;cdb_advertisementsCODE:
ALTER TABLE `cdb_advertisements` CHANGE `advid` `advid` MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT;cdb_announcementsCODE:
ALTER TABLE `cdb_announcements` CHANGE `id` `id` SMALLINT(6) UNSIGNED NOT NULL AUTO_INCREMENT;cdb_attachmentsCODE:
ALTER TABLE `cdb_attachments` CHANGE `aid` `aid` MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT;cdb_attachtypesCODE:
ALTER TABLE `cdb_attachtypes` CHANGE `id` `id` SMALLINT(6) UNSIGNED NOT NULL AUTO_INCREMENT;cdb_bannedCODE:
ALTER TABLE `cdb_banned` CHANGE `id` `id` SMALLINT(6) UNSIGNED NOT NULL AUTO_INCREMENT;cdb_bbcodesCODE:
ALTER TABLE `cdb_bbcodes` CHANGE `id` `id` MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT;cdb_cronsCODE:
ALTER TABLE `cdb_crons` CHANGE `cronid` `cronid` SMALLINT(6) UNSIGNED NOT NULL AUTO_INCREMENT;cdb_forumlinksCODE:
ALTER TABLE `cdb_forumlinks` CHANGE `id` `id` SMALLINT(6) UNSIGNED NOT NULL AUTO_INCREMENT;cdb_forumsCODE:
ALTER TABLE `cdb_forums` CHANGE `fid` `fid` SMALLINT(6) UNSIGNED NOT NULL AUTO_INCREMENT;cdb_medalsCODE:
ALTER TABLE `cdb_medals` CHANGE `medalid` `medalid` SMALLINT(6) UNSIGNED NOT NULL AUTO_INCREMENT;cdb_membersCODE:
ALTER TABLE `cdb_members` CHANGE `uid` `uid` MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT;cdb_pluginhooksCODE:
ALTER TABLE `cdb_pluginhooks` CHANGE `pluginhookid` `pluginhookid` MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT;cdb_pluginsCODE:
ALTER TABLE `cdb_plugins` CHANGE `pluginid` `pluginid` SMALLINT(6) UNSIGNED NOT NULL AUTO_INCREMENT;cdb_pluginvarsCODE:
ALTER TABLE `cdb_pluginvars` CHANGE `pluginvarid` `pluginvarid` MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT;cdb_pmsCODE:
ALTER TABLE `cdb_pms` CHANGE `pmid` `pmid` INT(10) UNSIGNED NOT NULL DEFAULT '0' AUTO_INCREMENT;cdb_pmsearchindexCODE:
ALTER TABLE `cdb_pmsearchindex` CHANGE `searchid` `searchid` INT(10) UNSIGNED NOT NULL DEFAULT '0' AUTO_INCREMENT;cdb_postsCODE:
ALTER TABLE `cdb_posts` CHANGE `pid` `pid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;cdb_profilefieldsCODE:
ALTER TABLE `cdb_profilefields` CHANGE `fieldid` `fieldid` SMALLINT(6) UNSIGNED NOT NULL AUTO_INCREMENT;cdb_ranksCODE:
ALTER TABLE `cdb_ranks` CHANGE `rankid` `rankid` SMALLINT(6) UNSIGNED NOT NULL AUTO_INCREMENT;cdb_searchindexCODE:
ALTER TABLE `cdb_searchindex` CHANGE `searchid` `searchid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;cdb_smiliesCODE:
ALTER TABLE `cdb_smilies` CHANGE `id` `id` SMALLINT(6) UNSIGNED NOT NULL AUTO_INCREMENT;cdb_stylesCODE:
ALTER TABLE `cdb_styles` CHANGE `styleid` `styleid` SMALLINT(6) UNSIGNED NOT NULL AUTO_INCREMENT;cdb_stylevarsCODE:
ALTER TABLE `cdb_stylevars` CHANGE `stylevarid` `stylevarid` SMALLINT(6) UNSIGNED NOT NULL AUTO_INCREMENT;cdb_templatesCODE:
ALTER TABLE `cdb_templates` CHANGE `templateid` `templateid` SMALLINT(6) UNSIGNED NOT NULL AUTO_INCREMENT;cdb_threadsCODE:
ALTER TABLE `cdb_threads` CHANGE `tid` `tid` MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT;cdb_threadtypesCODE:
ALTER TABLE `cdb_threadtypes` CHANGE `typeid` `typeid` SMALLINT(6) UNSIGNED NOT NULL AUTO_INCREMENT;cdb_usergroupsCODE:
ALTER TABLE `cdb_usergroups` CHANGE `groupid` `groupid` SMALLINT(6) UNSIGNED NOT NULL AUTO_INCREMENT;cdb_wordsCODE:
ALTER TABLE `cdb_words` CHANGE `id` `id` SMALLINT(6) UNSIGNED NOT NULL AUTO_INCREMENT;
-----------------------------------------------------------------------------------------------------------------------


如何不通过install.php安装论坛,解决国外不能用gbk编码的问题

解决方法:
I.前言

会员有人提出来了,以前看飞雪试验可行,所以我也本地尝试了一下,发现的确是可以的。而且安装过程很快!

II.准备工作

很多国外的空间都很到位,给你一个数据库管理的地址,你可以通过那个地址进去管理,其实也就是一个phpmyadmin,这也正是我们需要的!如果没有数据库管理软件比如phpmyadmin的话,还是不推荐这个方法,因为没有必要再传一个这么大的PMA上去。。  

III.需要文件

只有一个文件,相当简单。下载附件解压缩得到test.sql。我们就需要它!

IV.步骤

1.上传论坛所有文件,修改好config.inc.php(必须),注意这里的表名前缀不能修改成其他,必须是cdb_
2.登陆PMA(phpmyadmin),选择你的数据库。
3.点SQL,然后点那个Browser,选择本地的test.sql。然后点执行
4.等执行完成(很快)以后,去论坛。
5.安装完毕

V.补充

登陆用户名为admin,密码是discuz,请登陆以后自行修改用户名和密码
由于test.sql中没有提供关于编码的东西,所以不会出现安装的时候出现Unknown charset gbk的情况,适合国外免费空间提供pma的情况安装。

结束。
-----------------------------------------------------------------------------------------------------------------------
导入数据库时出现 Errno.: 1193 的解决方法
错误提示:

SQL: SET NAMES 'gbk'
Error: Unknown system variable 'NAMES'
Errno.: 1193


1. 首先先使用 Notepad(日记本)或 UltraEdit 的软件(这个教程就使用 UltraEdit )打开第一卷的备份数据,然后使用 Ctrl+F 来寻找 SET NAMES 'gbk';
2. 找到 SET NAMES 'gbk'; 后就把它删除掉。
3. 接着再使用 Ctrl+R 在 Find What: 里输入 ENGINE=MyISAM DEFAULT CHARSET=gbk 然后在 Replace with: 里输入 TYPE=MYISAM 过后再点击 "Replace All"。
 即把 ENGINE=MYISAM DEFAULT CHARSET=gbk 所有的字体都替换成 TYPE=MYISAM
  注意:如果有多卷备份数据,请照着以上的方法除了删除 SET NAMES 'gbk';,其它的重复再照做一片。
4. 这时就可以看到所有的 ENGINE=MyISAM DEFAULT CHARSET=gbk 已经提换成 TYPE=MYISAM 了。
5. 完成后就把它储存上来。点击 "File ---> Save" 即储存。
6. 完成后就可以在后台导入数据了。

------------------------------------------------------------------------------------------------------------------------
Client does not support authentication protocol问题解决办法

mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法 

shell> mysql
Client does not support authentication protocol requested
by server; consider upgrading MySQL client


官方的说法是

MySQL 4.1 and up uses an authentication protocol based on a password hashing algorithm that is incompatible with that used by older clients. .....


如果你升级mysql到4.1以上版本后遇到以上问题,请先确定你的mysql client 是4.1或者更高版本.(WINDOWS下有问题你就直接跳到下面看解决方法了,因为MYSQL 在WINDOWS是client和server一起装上了的)

请使用以下两种方法之一

其一:

mysql> SET PASSWORD FOR
-> 'some_user'@'some_host' = OLD_PASSWORD('newpwd');


其二:

mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('newpwd')
-> WHERE Host = 'some_host' AND User = 'some_user';
mysql> FLUSH PRIVILEGES;


上面红色的部分请按自己实际情况修改....
这样做后,连接就会正常了@! 

注意:以上操作必须有用主机权限,登陆主机才能进行,如果没有请联系你的空间商帮你做

-----------------------------------------------------------------------------------------------------------------------
数据错误1267分析和解决方案
showlife遇到的错误提示:

Discuz! info: MySQL Query Error
User: Мг.$℃
Time: 2006-1-21 3:38pm
Script: /post.php
SQL: select count(*) FROM cdb_postban where (fid='4' or fid='65535')
AND username='Мг.$℃' AND timelimit > 1137829088
Error: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (gbk_chinese_ci,COERCIBLE) for operation '='
Errno.: 1267
Similar error report has beed dispatched to administrator before.


febay遇到的错误提示:

Discuz! info: MySQL Query Error


User: 超级女生

Time: 2006-10-2 1:14pm
Script: /post.php
SQL: select count(*) FROM cdb_postban where (fid='11' or fid='65535')


AND username='超级女生' AND timelimit > 1159766042

Error: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (gbk_chinese_ci,COERCIBLE) for operation '='
Errno.: 1267
Similar error report has beed dispatched to administrator before.


分析思路:
因为本人对数据数也是刚开始接触,错误解决的方法也知之甚少(在这里要先感谢一下febay对我的信任与给了机会让我思考学习),所以我最先做的一件事情是从字面上去理解出错的原因是什么,照原文意译过来是
SQL:选择点来自cdb_postban表里的(fid='4' or fid='65535') 
用户名为'Мг.$℃'和时间限定1137829088
错误:不合法的混合在校对(latin1_swedish_ci,IMPLICIT) 和(gbk_chinese_ci,COERCIBLE)对'='的*作(不知道译得对不对,反正意思是这样的) 
大家注意到红色和蓝色的部分了吧,这是user等出错字段的字符集。所以出错信息已经在这里告诉我们到底是出错了,该调整什么。另外,看到绿色代码部份,那个就等于告诉我们出问题的是表名为cdb_postban的表。所以接下来我们开始行动了:
首先登录phpMyAdmin,打开当前出错的数据库,选择出错的数据表,
注意到整理那一列,有3项字符集是:latin1_swedish_ci。这也就是出错的地方,可能这里会问了,为什么错的是这里,其实数据错误1267指的是安装插件的时候出的错,插件加入数据库的字符集和默认的不一样。中文的话一般默认为GB2312。所以我们要手动把它改正过来(也可以用SQL语句实现这里就不说了)点下图红色标记

把“整理”那一项选为“gbk_chinese_ci”(简体中文,不区分大小写),确定。

登出试验再发帖,成功。

经验总结:
1、遇到问题先从错误提示获得最基础信息来分析。
2、充分利用网络资源:
1)在技术类网站发帖求助(如谷优社区);
2)在搜索引擎搜索相关错误代码的信息;
3、善于动手、动脑、动口
4、*作数据库必须要求具备基础的知识,建议*作前先暂时关闭论坛并备份数据库。

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论