mysql 增删改查时的错误解决方法大全
信息1:Error: Access denied for user: 'linanma@localhost' (Using password: YES)
错误分析:这个是新手安装论坛经常出现的问题之一,产生原因一般有两种
1、数据库用户名或密码不正确引起的错误。
2、config.inc.php的属性不是777。
解决方法:
1、联系空间服务商询问正确的数据库服务器用户名和密码,记住是数据库服务器的密码,别弄错了。
如果是安装的时候出现这个问题,那就把正确的用户名和密码填到输入框中。
2、修改论坛根目录下的config.inc.php属性为777。用ftp软件登录到ftp站点,
选择config.inc.php点击右键-〉属性 设置为可读可写(即777)。
信息2:Error: Unknown column 'msignature' in 'field list'
错误分析:字面意思是说缺少'msignature'字段,一般情况是因为安装插件
时修改了程序文件而没有升级数据库造成的,或者是因为数据库和程序文件不
相匹配,也就是说数据库的版本和程序文件的版本不同(这里说都是discuz的
版本,比如数据库用的是discuz2.x的而程序文件是discuz4.0的,那肯定会
出现上述问题)。
解决方法:如果是安装了插件的,请仔细察看该插件安装的说明文件,看有没
有提供升级数据库的SQL语句,找到后以管理的身份进入“系统设置”-〉“数
据库升级”-〉拷贝你找到的升级数据库SQL语句到上面-〉“提交”。如果还
是没能解决问题的话,删除服务器上你修改过的文件,之后重新上传该文件到
相应目录(即,用你机子上的没有修改过的文件替换服务器上的文件)。如果
还没有解决问题,那请先确定你的数据库是discuz哪个版本的,之后上传这个
版本的程序文件到服务器。
信息3:Error: Can't open file: 'cdb_forums.MYI'. (errn 145)
错误分析:服务器非法关机,有可能会对部分数据库造成一定影响。一般运行会报错
**.MYI不能打开。
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
信息4:SQL: Select groupid,url,title FROM cdb_onlinelist Where 1 orDER BY displayorder Error: Got error 127 from storage engine Errno.: 1030
错误分析:这个问题是由于所查询的表损坏造成的。
解决方法:同上信息3
也可以通过恢复以前的备份数据来解决这个问题
信息5:SQL: Create TABLE cdb_access ( uid mediumint(8) unsigned NOT NULL default '0', fid smallint(6) unsigned NOT NULL default '0', allowview tinyint(1) NOT NULL default '0', allowpost tinyint(1) NOT NULL default '0', allowreply tinyint(1) NOT NULL default '0', allowgetattach tinyint(1) NOT NULL default '0', PRIMARY KEY (uid,fid)) ENGINE=MyISAM DEFAULT CHARSET=latin1 Error: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DEFAULT CHARSET=latin1' at line 1 Errno.: 1064
错误分析:语句最后面的DEFAULT CHARSET=latin1造成的错误,这个是因为MySQL
版本差异产生的,4.1以后的版本就可以了,4.1以前的版本就会提示上面这样的错误。
解决方法:在导入数据前先把DEFAULT CHARSET=latin1手动去掉再导入。用文本编
辑器(如:记事本)打开备份文件,查找DEFAULT CHARSET=latin1 替换成空,
也就是删除掉这句。
信息6:Error: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
错误分析:造成此错误有两种情况
1、MySQL服务器没有开启。
2、php编译的时候没有编译MySQL。
解决方法:很显然两种情况都是服务器造成的。所以联系尽快联系空间服务商,
反映情况让他们去解决。如果是在自己的机子上本地安装那么看看是否开启了
MySQL服务器,没有的话先开启。
信息7:Error: Table 'test.cdb_sessions' doesn't exist
错误分析:这个问题是由于所查询的表不存在造成的
解决方法:可以通过恢复以前的备份数据来解决这个问题。以管理员的身份登录你的
论坛-〉“系统设置”-〉“资料恢复”如果备份的资料在自己机子上,那么点击浏览
选择你的备份文件,之后点击“提交”。如果备份资料在服务器上,那么在下在找到
你要恢复的备份点击“导入”。
温馨提示:所有的类似(Table 'table_name' doesn't exist )都可以通过这个
方法来解决。建议尽量不要把备份放在服务器上,以免别人恶意下载,或者执行完导
入后及时删除备份。
信息8:Error: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near at line 1 Errno.: 1064
错误分析:类似这样的错误是sql语句错误,一般是由于在安装插件或其他操作时改
动了程序文件造成的。
解决方法:可以通过替换出错的文件来解决。重新上传同名的出错文件到服务器,
比如你在装插件的时候修改了viewthread.php文件,结果出错了,那么你可以把你
自己机子上的没有修改过的viewthread.php上传上去,系统会提示你已经有一个
viewthread.php文件,你只要选择替换(有些系统叫“覆盖”)就可以了。
温馨提示:安装插件时当需要修改原程序是最好先备份该程序文件,以备不时之需。
信息9:SQL: Create DATABASE db1 Error: Access denied for user: '[email protected]' to database 'db1'
错误分析:这个错误是由于数据库用户的权限引起的,也就是说你没有创建数据库的
权限(Create DATABASE 'db_name'),很多空间都有这个限制。
解决方法:向空间提供商询问你可以使用的数据库名,安装discuz是在数据库一栏填
上此名即可。
温馨提示:一般的空间都提供了一个管理平台,在上面会告诉你你的所有信息,当然
也包括数据库名
信息10:Error: Got error 28 from table handler Errno.: 1030
错误分析:这个错误是由于数据库所在磁盘空间已满造成的。
解决方法:可以通过删除一些数据库日志文件来解决,若不行的话就得和空间商联系
增加数据库空间。
信息11:Error: Client does not support authentication protocol requested by server; consider upgrading MySQL client Errno.: 1251
错误分析:[援引官方]如果你升级mysql到4.1以上版本后遇到以上问题,请先确定
你的mysql client 是4.1或者更高版本.(WINDOWS下有问题你就直接跳到下面看
解决方法了,因为MYSQL 在WINDOWS是client和server一起装上了的)
解决方法:
1、windows平台
主要是改变连接MySQL的帐户的加密方式,MySQL4.1/5.0是通过PASSWORD这种方
式加密的.可以通过以下两种方法得到解决:
mysql->SET PASSWORD FOR 'some_user'@'some_host'=OLD_PASSWORD('new_password');
mysql->Update mysql.user SET Password=OLD_PASSWORD('new_password') Where Host='some_host' AND User='some_user';
2、Unix平台
linux平台下首先确定是否安装过MySQL的客户端,这个用rpm安装很简单:
rpm -ivh MySQL-client-4.1.15-0.i386.rpm
然后在编译php的时候要加上:
--with-mysql=/your/path/to/mysql
一般情况下都可以解决。如果还出现这种错误,可以按照下面的方法来做:
mysql->SET PASSWORD FOR 'some_user'@'some_host'=OLD_PASSWORD('new_password');
mysql->Update mysql.user SET Password=OLD_PASSWORD('new_password') Where Host='some_host' AND User='some_user';
信息12:Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
错误分析:造成此错误有两种情况1、MySQL服务器没有开启。2、php编译的时候
没有编译MySQL。
解决方法:很显然两种情况都是服务器造成的。所以联系尽快联系空间服务商,
反映情况让他们去解决。
信息13:SQL: Select COUNT(*) FROM cdb_banned Where (ip1='219' or ip1='-1') AND (ip2='77' or ip2='-1') AND (ip3='213' or ip3='-1') AND (ip4='229' or ip4='-1') Error: No Database Selected Errno.: 1046
错误分析:字面意思,没有数据库被选择。
两种情况:
1、数据库被删除。
2、config.inc.php配置文件错误。
解决方法:针对上述情况1、先重新安装论坛,登录后进入“系统设置”-〉
“资料恢复”点击“浏览”选择你以前的备份文件,点击“提交”。
上述情况2、用文本编辑器打开论坛根目录下的config.inc.php填写正确
的各项信息。对照下面的填写。
$dbhost = 'localhost'; // database server
// 数据库服务器
$dbuser = 'dbuser'; // database username // 数据库用户名
$dbpw = 'dbpasswd'; // database password // 数据库密码
$dbname = 'dbname'; // database name // 数据库名
温馨提示:程序文件出错时在替换文件时不要替换config.inc.php,
否则就会出现上面的错误。
信息14:Error: Unknown column 'column_name' in 'field list' 程序文件跟数据库有冲突,请使用正确的程序文件上传上去覆盖
错误分析:字面意思缺少column_name字段。可能是1、因为安装某插件
后没有相应地升级数据库,或者2、是数据库和程序文件不匹配,即版本
不同造成的。
解决方法:1、到后台设置里面升级数据库即可。登录后进入“系统设置”
-〉“资料恢复”点击“浏览”选择你以前的备份文件,点击“提交”。或者
在下面列出的备份当中选择一个你需要的恢复点击其后的“导入”。
2、将匹配数据库的程序文件上传至服务器替换原有文件除config.inc.php之外。
信息15:SQL: Array Error: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'Array' at line 1 Errno.: 1064
错误分析:类似这样的错误是sql语句错误,一般是由于在安装插件或其他操作
时改动了程序文件造成的。
解决方法:可以通过替换出错的文件来解决,即重新上传程序文件。
温馨提示:安装插件时当需要修改原程序是最好先备份该程序文件,以备不时之需。
信息16:SQL: Insert INTO cdb_pms VALUES(,'杨小邪', '1', '7','inbox', '1', '您有新的合影请求','1125764991', '杨小邪向您发起了合影请求。请至照相馆查看和您相关的合影请求并进行相关操作。') Error: Column count doesn't match value count at row 1 Errno.: 1136
错误分析:数据表的字段和values里的字段不搭配。产生的原因大体上有两种:
1、发短消息时产生,程序文件和数据库文件不匹配造成此错误。
2、数据恢复时产生,备份的数据和使用的数据结构不相同造成的。
解决方法:
1、用正确的和数据库相匹配的程序文件(即,数据库的discuz的版本和程序文
件的第scuz版本一致)替换原有的程序文件除config.inc.php之外。
2、把使用中的数据库结构恢复成和备份数据的结构相同,数据成功恢复后再
升级数据库。
信息17:SQL: Insert INTO cdb_settings VALUES ('delayreply', 0) Error: Duplicate entry 'delayreply' for key 1 Errno.: 1062
错误分析:在插记录到数据表中时,已经有跟此记录主键相同的纪录存在于该
表中。因为主键具有唯一性所以产生此错误。
解决方法:既然已经有的此记录那就不用插入了,此时无为胜有为啊。如果一
定要插入的话那就先删除掉原来的纪录了。进入phpmyadmin里选择你要删除
的纪录所在的表,点击浏览,找到你要删除的记录后点击红色的叉(有些是
“删除”)
信息18:SQL: REPLACE INTO cdb_statvars (type, variable, value) VALUES ('main', 'bestmem', ''.Ρucca.!') Error: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '.Ρucca.!')' at line 2 Errno.: 1064
错误分析:这种类型的错误多发生在安装插件时自行修改程序文件后,针对
上面的这个问题是SQL语句的错误,多了一个 '
解决方法:用文本编辑器(如:记事本)打开出错的文件找到这段代码,
去掉SQL语句中"bold">后面的'即可。
信息19:SQL: Create TABLE cdb_sessions ( sid char(6) character set latin1 collate latin1_bin NOT NULL default , ip1 tinyint(3) unsigned NOT NULL default '0', ip2 tinyint(3) unsigned NOT NULL default '0', ip3 tinyint(3) unsigned NOT NULL default '0', ip4 tinyint(3) unsigned NOT NULL default '0', uid mediumint(8) unsigned NOT NULL default '0', username char(15) NOT NULL default , groupid smallint(6) unsigned NOT NULL default '0', styleid smallint(6) unsigned NOT NULL default '0', invisible tinyint(1) NOT NULL default '0', `action` tinyint(1) unsigned NOT NULL default '0', lastactivity int(10) unsigned NOT NULL default '0', fid smallint(6) unsigned NOT NULL default '0', tid mediumint(8) unsigned NOT NULL default '0', KEY sid (sid)) TYPE=HEAP MAX_ROWS=50000 Error: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'collate latin1_bin NOT NULL default , ip1 tinyint(3) unsigne Errno.: 1064
错误分析:这个问题也是因为MySQL的版本不同造成的
解决方法:导入前手动修改要导入的文件。去掉
character set latin1 collate latin1_bin即可,用文本编辑器
(如:记事本等等)代开出错的备份的文件,查找
character set latin1 collate latin1_bin,找到后逐一删除,
或者打开替换在查找栏输入:character set latin1 collate latin1_bin
在替换栏里什么也不要输入,保留空白,之后点“全部替换”。
信息20:SQL: SHOW Create TABLE cdb_rsscaches Error: Can't find file: 'cdb_rsscaches.MYD' (errn 2) Errno.: 1017
错误分析:服务器非法关机,有可能会对部分数据库造成一定影响。
一般运行会报错
**.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
信息21:SQL: Create TABLE `cdb_access` ( `uid` mediumint(8) unsigned NOT NULL default '0', `fid` smallint(6) unsigned NOT NULL default '0', `allowview` tinyint(1) NOT NULL default '0', `allowpost` tinyint(1) NOT NULL default '0', `allowreply` tinyint(1) NOT NULL default '0', `allowgetattach` tinyint(1) NOT NULL default '0', `allowpostattach` tinyint(1) NOT NULL default '0', PRIMARY KEY (`uid`,`fid`)) ENGINE=MyISAM Error: You have an error in your SQL syntax near 'ENGINE=MyISAM' at line 1 Errno.: 1064
错误分析:MySQL版本引起的SQL语句错误。
解决方法:用文本编辑器(如:记事本之类的)打开出错的文件,查找ENGINE=MyISAM,删除即可。