叮叮
发表于 2013-4-28 06:14:20
Sort aborted
问题分析:
网站运行突然出现 MySQL 的错误 Sort aborted ,怎么处理?
解决方法:
可能存在数据量非常大的数据表,或是执行了带 order by OR group by 的 SQL 语句。
1、独立主机建议您检查下内存的使用情况。建议将 MySQL 配置文件中的 sort_buffer_size 、read_rnd_buffer_size、read_buffer_size 设置大点(MYSQL配置文件 Unix/Linux: my.cnf,Windows: my.ini)。再加上内存与 CPU 使用量大的时候也会导致 MySQL 死掉。
2、如果是虚拟主机请联系您的空间商。
叮叮
发表于 2013-4-28 06:14:55
Allowed memory size of %d bytes exhausted in %s
问题分析:
数据库执行时占用内存过大,服务器配置问题。
解决方法:
独立主机:打开 php.ini,找到 memory_limit = 后面的数改大一些,比如 32M ,重新启动 IIS 或者 Apache 就行了(会多消耗内存)。
虚拟主机:请联系空间商,或者在程序的全局包含文件,例如 config 文件,加入如下代码即可。ini_set("memory_limit","32M");
叮叮
发表于 2013-4-28 06:15:37
INSERT command denied to user
错误编号:1142
问题分析:
网站运行突然出现下面的 MySQL 错误: MySQL server error report:
INSERT command denied to user '%s'@'localhost' for table '%s' , errno: 1142
解决办法:
1、请检查您的 MySQL 帐号是否有相应的权限。
2、检查一下应用下的 config 配置文件中的连接数据库的帐号是否正确。
3、检查一下数据库是否满了,如果数据库满了没有空间后也会出现这种情况。
叮叮
发表于 2013-4-28 12:30:33
Duplicate column name \'type\'
错误编号:1060
问题分析:
字段重复,导致无法插入这个字段。
解决方法:
到对应数据表中确认是否已经存在插入的字段。如果安装了插件,建议您先卸载此插件,然后联系插件作者处理。
叮叮
发表于 2013-4-28 12:31:39
Query was empty
错误编号:1065
问题分析:
无效的 SQL 语句,SQL 语句为空。
解决方法:
检查所执行的 SQL 语句是否为空。如果为空,请设置需要执行的数据库操作语句。如果您是由于安装插件或者修改代码造成此错误,请重新上传程序。
叮叮
发表于 2013-4-28 12:32:47
MySQL编码机制
大家都知道从 MySQL4.1 版本开始,支持多种编码,包括我们熟知的 latin1、gbk、utf8、big5 等等,还有一些我们闻所未闻的。
在使用 PHP 连接 MySQL 查询出来的数据有的时候居然会是乱码,关于乱码的解决首先我们要了解 MySQL 的编码机制。
拿 Discuz! 论坛为例,Discuz! 论坛在连接 MySQL 后会立即执行一个设定(见include/db_mysql.class.php ):<p>@mysql_query("SET character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary", $this->link);</p>此三处的字符设定很大程度上会解决乱码问题,那么这三个设定具体有什么作用呢?如果我们了解了 MySQL 的编码机制,就可以避免在安装插件及平时的操作过程中产生乱码,还可以自行对论坛的数据进行转码。
character_set_client 我们可以理解为 SQL 语句的编码,如果设置为 binary,MySQL 就当二进制来处理,character_set_connection 设定的值则告诉 MySQL 用来运行 SQL 语句的时候使用的编码,也就是说,程序发送给 MySQL 的 SQL 语句,会首先被 MySQL 从 character_set_client 指定的编码转换到 character_set_connection 指定的编码,如果 character_set_clien 指定的是 binary ,则 MySQL 就会把 SQL 语句按照 character_set_connection 指定的编码解释执行。
当执行 SQL 语句的过程中,比如向数据库中插入取出数据的时候,字段也有编码设置,如果字段的编码设置和 character_set_connection 指定的不同,则 MySQL 会把插入的数据转换成字段设定的编码。
当 SQL 执行完毕向客户端返回数据的时候,会把数据从字段指定的编码转换为 character_set_results 指定的编码,如果 character_set_results=NULL 则不做任何转换动作,(注意这里设置为 NULL 不等于没有设置,没有设置的时候 MySQL 会继承全局设置)。
了解了 MySQL 的编码机制,我们就可以利用这个机制进行数据的转码以及避免在程序使用过程中出现乱码了。
补充:
mysql_query("character_set_client=gbk"); 这句告诉 MySQL 我接下来要用的 SQL 语句的编码是 GBK 的
mysql_query("character_set_connection=gbk"); 这句 告诉 MySQL 要把 SQL 语句转换成 GBK 进行处理
mysql_query("character_set_results=gbk"); 这句告诉 MYSQL 查询返回的结果要统一都转换成 GBK 编码的
叮叮
发表于 2013-4-28 12:34:35
快速修复损坏的MySQL数据库
在长时间使用 MySQL 后,数据库可能会出现一些问题。大多数问题可以通过简单的操作进行快速修复。下面介绍两种快速检修 MySQL 数据库的方法。
1、myisamchk
使用 myisamchk 必须暂时停止 MySQL 服务器。例如,我们要检修 discuz 数据库。执行以下操作:# service mysql stop (停止 MySQL );
# myisamchk -r /数据库文件的绝对路径/*MYI
# service mysql start
myisamchk 会自动检查并修复数据表中的索引错误。
2、mysqlcheck使用 mysqlcheck 无需停止 MySQL ,可以进行热修复。操作步骤如下:
# mysqlcheck -r discuz.*
注意,无论是 myisamchk 还是 mysqlcheck ,一般情况下不要使用 -f 强制修复,-f 参数会在遇到一般修复无法成功的时候删除部分出错数据以尝试修复。所以,不到万不得已不要使用 -f。
叮叮
发表于 2013-4-28 12:38:33
Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法
错误提示:
Error: Can't create/write to file 'C:\WINDOWS\TEMP\#sql_738_0.MYD' (Errcode: 17)Errno.: 1 问题分析:
1、C:\Windows\TEMP 文件夹权限不够,至少也要给出 USERS 组的可读可写权限;
2、C:\Windows\TEMP 文件夹的磁盘满了,文件写不进去了,清空 TEMP 文件夹;
3、第三方限制(如杀毒软件的限制)
1)你的服务器装了 MCAFEE 杀毒软件,它的访问保护禁止了 TEMP 文件可写,修改访问保护设置;
2)还是MCAFEE杀毒软件的问题,解决步骤:按访问扫描属性 - 所有进程 - 检测项 - 扫描文件(在写入磁盘时 )勾去掉就好了。