您的当前位置:首页正文

MySQL 常见错误分析与解决方法总结

2023-11-10 来源:帮我找美食网

翻译:不能连接到localhost 上的mysql?分析:这说明“localhost”计算机是存在的,但在这台机器上却没提供MySQL服务。?需要启动这台机器上的MySQL服务,如果机子负载太高没空相应请求也会产生这个错误。?解决:既然没有启动那就去启动这台机子的mysql。如果启动不成功,多数是因为你的my.ini配置的有问题。重新配置其即可。?如果觉得mysql负载异常,可以到mysql/bin 的目录下执行mysqladmin-uroot -p123 processlist来查看mysql当前的进程。

二、Unknown MySQL ServerHost ‘localhosadst‘ (11001)

?

翻译:未知的MySQL服务器localhosadst?分析:服务器localhosasdst 不存在。或者根本无法连接?解决:仔细检查自己论坛下面的./config.inc.php找到$dbhost重新设置为正确的mysql 服务器地址。

三、Access denied for user:‘roota@localhost‘ (Using password: YES)

?翻译:用户roota 访问 localhost 被拒绝(没有允许通过)?分析:造成这个错误一般数据库用户名和密码相对mysql服务器不正确?解决:仔细检查自己论坛下面的 ./config.inc.php 找到$dbuser、$dbpw核实后重新设置保存即可。

四、Access denied for user:‘red@localhost‘ to database ‘newbbs‘?

翻译:用户 red在localhost 服务器上没有权限操作数据库newbbs?分析:这个提示和问题三是不同的。那个是在连接数据库的时候就被阻止了,而这个错误是在对数据库进行操作时引起的。比如在selectupdate等等。这个是因为该用户没有操作数据库相应的权力。比如select 这个操作在mysql.user.Select_priv里记录 Y 可以操作N 不可以操作。?解决:如果是自己的独立主机那么更新mysql.user 的相应用户记录,比如这里要更新的用户为red 。或者直接修改./config.inc.php 为其配置一个具有对数据库操作权限的用户?或者通过如下的命令来更新授权grantall privileges on dbname.* to ‘user‘@‘localhost‘ identified by ‘password’?提示:更新了mysql库中的记录一定要重启mysql服务器才能使更新生效?FLUSH PRIVILEGES;

五、No Database Selected

?翻译:没有数据库被选择上?分析:产生的原因有两种?config.inc.php 里面$dbname设置的不对。致使数据库根本不存在,所以在$db->select_db($dbname); 时返回了false?和上面问题四是一样的,数据库用户没有select权限,同样会导致这样的错误。当你发现config.inc.php的设置没有任何问题,但还是提示这个错误,那一定就是这种情况了。?解决:对症下药?打开config.inc.php找到$dbname核实重新配置并保存?同问题四的解决方法

六、Can‘t open file:‘xxx_forums.MYI‘. (errno: 145)

翻译:不能打开xxx_forums.MYI?问题分析:?这种情况是不能打开cdb_forums.MYI 造成的,引起这种情况可能的原因有:?1、服务器非正常关机,数据库所在空间已满,或一些其它未知的原因,对数据库表造成了损坏。?2、类 unix 操作系统下直接将数据库文件拷贝移动会因为文件的属组问题而产生这个错误。?解决方法:?1、修复数据表?可以使用下面的两种方式修复数据表:(第一种方法仅适合独立主机用户)?1)使用 myisamchk ,MySQL自带了专门用户数据表检查和修复的工具 —— myisamchk 。更改当前目录到MySQL/bin 下面,一般情况下只有在这个下面才能运行 myisamchk 命令。常用的修复命令为:myisamchk-r 数据文件目录/数据表名.MYI;?2)通过 phpMyAdmin 修复,phpMyAdmin 带有修复数据表的功能,进入到某一个表中后,点击“操作”,在下方的“表维护”中点击“修复表”即可。?注意:以上两种修复方式在执行前一定要备份数据库。?2、修改文件的属组(仅适合独立主机用户)?1)复制数据库文件的过程中没有将数据库文件设置为MySQL 运行的帐号可读写(一般适用于 Linux和 FreeBSD 用户)。

七、Table‘test.xxx_sessions‘ doesn‘t exist

?翻译:xxxxx表不存在?分析:在执行sql语句时没有找到表,比如:SELECT * FROMxxx_members WHERE uid=’XX’ 这里如果表xxx_members不存在于$dbname库里,那么就会提示这个错误。具体可分为以下三种情况来讨论:?安装插件或者hack时修改了程序文件,而忘记了对数据库作相应的升级。?后台使用了不完全备份,导入数据时没有导入到已经安装了相应版本的论坛的数据库中。?解决: 同样对症下药,不同的原因不同的处理方法。?仔细对照插件作者提供的安装说明,把遗漏的对数据库的操作补上,如果仍然不能解决问题,那么应该怀疑该插件的可用性了。去咨询一下插件作者,或者将其卸载。?不要张冠李戴,多大的脚就穿多大的鞋。总之使得程序文件和数据库配套即可.

八、Unknown column‘column_name‘ in ‘field list‘

?

翻译:未知的字段名column_name?分析:在执行sql语句是出现了指定表中没有的字段名称,就会出现这个错误。具体导致的原因可分为以下两种?安装插件或者hack时修改了程序文件,而忘记了对数据库作相应的升级。?程序文件和数据库不配套,比如d2.5的数据库配置给d4.1的程序来用肯定会出现这个错误。?解决: 导致的原因和问题八的1和 3是相同的,所以解决方法也一样。

九、You have an error in yourSQL syntax

?

翻译:有一个语法错误在你的sql中?分析:论坛标准的程序是没有sql语法错误的。所以造成这个错误的原因一般就两类?安装插件或擅自修改程序。?不同的数据库版本数据库导出导入,比如MySQL4.1的数据在导出的语句包含了MySQL4.0没有的功能,像字符集的设定,这时如果将这些sql导入到MySQL4.0的时候就会产生sql语法错误。?解决:?仔细检查看到底是哪里的错误,将其修正,实在不行就用标准程序把出错的程序替换。?在数据库备份的时候要留意,如果不打算倒入到其他版本的mysql中则不用特殊考虑,反之要特殊的设定。使用DZ4.1的后台数据备份,可以按照提示去设定想要的格式。独立主机的也可以在到处的时候将其导出为mysql4.0的格式。?mysqldump -uroot -p--default-character-set=latin1 --set-charset=gbk --skip-opt databse >test.sql

十、Duplicate entry ‘xxx‘for key 1

?

翻译:插入 xxx使索引1重复?分析:索引如果是primaryunique这两两种,那么数据表的数据对应的这个字段就必须保证其每条记录的唯一性。否则就会产生这个错误。?一般发生在对数据库写操作的时候,例如Discuz!4.1论坛程序要求所有会员的用户名username必须唯一,即username的索引是unique,这时如果强行往cdb_members表里插入一个已有的username的记录就会发上这个错误,或者将一条记录的username更新 为已有的一个username。?改变表结构的时候也有可能导致这个错误。例如 Discuz!4.0论坛的数据库中cdb_members.username的索引类型是index这个时候是允许有相同username的记录存在的,在升级到4.1的时候,因为要将username的索引由原来的index变 为unique。如果这时cdb_members里存在有相同的username的记录,那么就会引发这个错误。?导出数据据时有时会因为一些原因(作者目前还不清楚)导致同一条记录被重复导出,那么这个备份数据在导入的时候出现这个错误是在所难免的了。?修改了auto_increment的值,致使“下一个Autoindex”为一条已经存在的记录?解决: 两种思路,一是破坏掉唯一性的索引。二是把重复的数据记录干掉,只保留一条。很显然第一种思路是不可取的。那么按照二的思路我们得出以下几种解决方法,对应上面的i iiiii?略?按照错误提示里的信息到数据库中将重复的记录删除,仅保留一条即可。之后继续执行升级操作。?这种情况发生的概率很小,可以用文本编辑器打开备份文档,查找重复的信息。将其多余的拿掉,仅保留一条即可。?查询出表中auto_increment最大的一条记录,设置auto_incerment比其大一即可。?PS:repaire table "表名“,可以暂时解决问题。

十一、 Duplicate key name‘xxx‘

?翻译:索引名重复?分析:要创建的索引已经存在了,就会引发这个错误,这个错误多发生在升级的时候。可能是已经升级过的,重复升级引起的错误。也有可能是之前用户擅自加的索引,刚好与升级文件中的所以相同了。?解决: 看看已经存在的索引和要添加的索引是否一样,一样的话可以跳过这条sql语句,如果不一样那么现删除已存在的所以,之后再执行。

十二、 Duplicate column name‘xxx‘

?翻译:字段名xxx重复?分析:添加的字段xxx已经存在,多发生在升级过程中,与问题十二的产生是一样的。?解决: 看一下已经存在的字段是否和将要添加的字段属性完全相同,如果相同则可以跳过不执行这句sql,如果不一样则删除掉这个字段。之后继续执行升级程序。

十三、 Table ‘xxx‘ alreadyexists

?翻译:数据表xxx已经存在?分析:xxx表已经存在于库中,再次试图创建这个名字的表就会引发这个错误。同样多发生在论坛的升级中。类似于问题十二。?解决: 看看已经存在的表是否和将要创建的表完全一样,一样的话可以跳过不执行这个sql,否则请将存在的表先删除,之后继续执行升级文件。

十四、 Can‘t create database‘xxx‘. Database exists

?

翻译:不能创建数据库xxx,数据库已经存在?分析:一个mysql下面的数据库名称必须保证唯一性,否则就会有这个错误。?解决:把已经存在的数据库改名或者把将要创建的数据库改名,总之不让他们的名称冲突。

十五、 小结(针对问题1112131415)

?

此类问题错误提示中都暗藏一个关键词duplicate(重复)?那么对于mysql数据库来说什么东西是不能重复的呢??数据库 database?同一个数据库下数据表table?同一个数据表下字段 column?同一个数据表下索引 key?同一个数据表在索引唯一(UNIQUEPRIMARY)的情况下记录中的这些字段不可以重复

十六、Unknown system variable‘NAMES‘

?翻译:未知的系统变量NAMES?分析:Mysql版本不支持字符集设定,此时强行设定字符集就会出现这个错误。?解决: 将sql语句中的SET NAMES ‘xxx’ 语句去掉

十七、 Lost connection toMySQL server during query

?

翻译:MySQL服务器失去连接在查询期间?分析:远程连接数据库是有时会有这个问题。MySQL服务器在执行一条sql语句的时候失去了连接造成的。?解决: 一般不需要怎么去处理,如果频繁的出现那么考虑改善硬件环境。

十八、User ‘red‘ has exceededthe ‘max_updates‘ resource (current value: 500)

?

翻译:msql用户red已经超过了‘max_updates‘(最大更新次数),‘max_questions‘(最大查询次数),‘max_connections‘(最大连接数),当前设定为500?分析:在mysql数据库的下有一个库为mysql,它其中有一个表为user这里面的纪录每一条都对应为一个mysql用户的授权。其中字段max_questions max_updates max_connections分别记录着最大查询次数 最大更新数 最大连接数,当目前的任何一个参数大于任何一个设定的值就会产生这个错误。?解决: 独立主机用户可以直接修改授权表。修改完之后重启mysql或者跟新授权表,进入mysql提示符下执行?FLUSH PRIVILEGES;?记得后面要有分号’;’?虚拟主机的用户如果总是出现这个问题可找空间商协商解决。

十九、Too many connections(1040)链接过多?

翻译:达到最大连接数?问题分析:?连接数超过了mysql设置的值,与max_connections和wait_timeout 都有关系。wait_timeout的值越大,连接的空闲等待就越长,这样就会造成当前连接数越大?解决方法:?1.虚拟主机用户请联系空间商优化MySQL 服务器的配置;?2.独立主机用户请联系服务器管理员优化MySQL 服务器的配置,可参考:?修改MySQL 配置文件 my.ini 或者 my.cnf 中的参数:?max_connections= 1000?wait_timeout = 10?修改后重启 MySQL ,如果经常性的报此错误,请做一下服务器的整体优化。

二十、There is no such grantdefined for user ‘%s‘ on host ‘%s‘?

错误编号:1141?问题分析:?MySQL当前用户无权访问数据库。?解决方法:?1、虚拟主机用户请联系空间商,确认给你提供的帐号是否有授权数据库的权限。?2、独立主机用户请联系服务器管理员,确认给您提供的数据库帐号是否有管理此数据库的权限。

二十一、Error on rename of ‘%s‘to ‘%s‘ (errno: %d)?error.:1025?

问题分析:?请检查一下您的程序是否有修改数据库表名的语句。?解决方法:?1.请检查您的程序中哪些地方需要修改数据库表名;?2.如果您的实际应用确实需要修改到数据库表名的话,请联系空间商或者服务器管理员给您开放修改库名的权限和服务器本身是否正常。

二十二、Error reading file ‘%s‘(errno: %d)?error.:1023?

问题分析:?数据库文件不能被读取。?解决方法:?1.虚拟主机用户请联系空间商查看数据库是否完好。?2.独立主机用户请联系服务器管理员检查一下MySQL 本身是否正常, MySQL 是否可以读取文件,Linux 用户可以检查一下MySQL 的数据库文件的属主是否正确以及本身的文件是否损坏。

二十三、Host ‘*****‘ is blockedbecause of many connection errors; unblock with ‘mysqladmin flush-hosts‘?error.:1129

?

问题分析:?数据库出现异常,请重启数据库。?解决方法:?1. 由于存在很多连接错误,主机‘****‘被屏蔽,虚拟主机用户请联系空间商处理,独立主机用户请联系服务器管理员,在MySQL 的命令控制台下执行‘mysqladmin flush-hosts‘解除屏蔽即可,或者重启MySQL 数据库

二十四、dropping database (can‘tdelete ‘%s‘, errno: %d)?error.:1009?

问题分析:?不能删除数据库文件,导致删除数据库失败。?解决方法:?1.检查您使用的数据库管理帐号是否有权限删除数据。?2.检查数据库是否存在。

二十五、Got error 28 from tablehandler?error.:1030?

问题分析:?数据库所在磁盘空间已满。?解决方法:?1.虚拟主机用户请联系空间商增加MySQL 所在的磁盘空间或者清理一些无用文件;?2.独立主机用户请联系服务器管理员增加MySQL 所在的磁盘空间或者清理一些无用文件

二十六、Can‘t create a newthread; if you are not out of available memory, you can consult the manual fora possible OS-dependent bug。?error.:11/35?

问题分析:?数据库服务器问题,数据库操作无法创建新线程。一般是两个原因:?1.服务器系统内存溢出。?2.环境软件损坏或系统损坏。?解决方法:?1.虚拟主机用户请联系下空间商数据库服务器的内存和系统是否正常。?2.独立主机用户请联系服务器管理员检查服务器的内存和系统是否正常,如果服务器内存紧张,请检查一下哪些进程消耗了服务器的内存,同时考虑是否增加服务器的内存来提高整个的负载能力。

二十七、Error: Client does notsupport authentication protocol requested by server; consider upgrading MySQLclient?error.:1251?

问题分析:?如果你升级MySQL 到 4.1 以上版本后遇到以上问题,请先确定你的MySQL Client 是 4.1 或者更高版本(Windows下有问题你就直接跳到下面看解决方法了,因为 MySQL 在Windows 是 client 和 server 一起装上了的)。?解决方法:?1.Windows 平台?主要是改变连接MySQL 的帐户的加密方式,MySQL 4.1/5.0 是通过PASSWORD 这种方式加密的。可以通过以下两种方法得到解决:?1) mysql->SET PASSWORD FOR‘some_user‘@‘some_host‘=OLD_PASSWORD(‘new_password‘);?2) mysql->UPDATE mysql.user SETPassword=OLD_PASSWORD(‘new_password‘) WHERE Host=‘some_host‘ ANDUser=‘some_user‘;?2.Linux/Unix 平台?Linux平台下首先确定是否安装过 MySQL 的客户端,这个用 rpm安装很简单,Linux 代码为:?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‘;

二十八、Error: Can‘t connect tolocal MySQL server through socket ‘/var/lib/mysql/mysql.sock‘?error.:2002?

问题分析:?出现这个错误一般情况下是因为下面两个原因:?1.MySQL 服务器没有开启。?2.MySQL 服务器开启了,但不能找到 socket 文件。?解决方法:?1.虚拟主机用户,请联系空间商确认数据库是否正常启动。?2.独立主机用户,请检查一下 MySQL 服务是否已经开启,没有开启,请启动MySQL 服务;如果已经开启,并且是 Linux 系统,请检查一下MySQL 的 socket 的路径,然后打开 config.inc.php 找到?$dbhost = ‘localhost‘; 在hostname 后面加冒号‘:’和 MySQL 的socket 的路径。?比如MySQL 服务器为 localhost?MySQL的 socket 的路径为 /tmp/mysql.sock?那么就改成如下:?$dbhost= ‘localhost:/temp/mysql.sock‘;

二十九、Can‘t connect to MySQLserver on ‘localhost‘?error.:2003?

问题分析:?MySQL服务没有启动,一般是在异常的情况下 MySQL 无法启动导致的,比如无可用的磁盘空间,my.ini里 MySQL 的 basedir 路径设置错误等。?解决方法:?1.检查磁盘空间是否还有剩余可用空间,尽量保持有足够的磁盘空间可用。?2.检查 my.ini 里的basedir 等参数设置是否正确,然后重新启动下 MySQL 服务。

三十、Lost connection to MySQLserver during query?error.:2013

?问题分析:?数据库查询过程中丢失了与MySQL 服务器的连接。?解决方法:?1.请确认您的程序中是否有效率很低的程序,比如某些插件,可以卸载掉插件,检查一下服务器是否正常;?2.服务器本身资源紧张,虚拟主机用户请联系空间商确认,独立主机用户请联系服务器管理员,检查一下服务器是否正常。

三十一、Got a packet bigger than‘max_allowed_packet‘ bytes?

错误编号:1153?问题分析:调整了 Mantis 的上传附件的大小却没有调整 MySQL 的配置文件。?解决办法:?1、独立主机用户请按照以下方法调整:?查找 MySQL 的配置文件(my.cnf 或者my.ini)?在[mysqld] 部分添加一句(如果存在,调整其值就可以):?max_allowed_packet=10M?重启 MySQL 服务就可以了。这里设置的是 10MB。

MySQL 常见错误分析与解决方法总结

标签:

小编还为您整理了以下内容,可能对您也有帮助:

Mysql常见的几个错误问题及解决方法

一、Can’t connect to MySQL server on ‘localhost’ (10061)

翻译:不能连接到 localhost 上的mysql

分析:这说明“localhost”计算机是存在的,但在这台机器上却没提供MySQL服务。

需要启动这台机器上的MySQL服务,如果机子负载太高没空相应请求也会产生这个错误。

解决:既然没有启动那就去启动这台机子的mysql。如果启动不成功,多数是因为你的my.ini配置的有问题。重新配置其即可。

如果觉得mysql负载异常,可以到mysql/bin 的目录下执行mysqladmin -uroot -p123 processlist来查看mysql当前的进程。

二、Unknown MySQL Server Host ‘localhosadst’ (11001)

翻译:未知的MySQL服务器 localhosadst

分析:服务器 localhosasdst 不存在。或者根本无法连接

解决:仔细检查自己论坛下面的 ./config.inc.php 找到$dbhost重新设置为正确的mysql 服务器地址。

三、Access denied for user: ‘roota@localhost’ (Using password: YES)

翻译:用户 roota 访问 localhost 被拒绝(没有允许通过)

分析:造成这个错误一般数据库用户名和密码相对mysql服务器不正确

解决:仔细检查自己论坛下面的 ./config.inc.php 找到$dbuser、$dbpw核实后重新设置保存即可。

四、Access denied for user: ‘red@localhost’ to database ‘newbbs’

翻译:用户 red 在localhost 服务器上没有权限操作数据库newbbs

分析:这个提示和问题三是不同的。那个是在连接数据库的时候就被阻止了,而这个错误是在对数据库进行操作时引起的。比如在select update等等。这个是因为该用户没有操作数据库相应的权力。比如select 这个操作在mysql.user.Select_priv里记录 Y 可以操作N 不可以操作。

解决:如果是自己的主机那么更新mysql.user 的相应用户记录,比如这里要更新的用户为red 。或者直接修改 ./config.inc.php 为其配置一个具有对数据库操作权限的用户

或者通过如下的命令来更新授权grant all privileges on dbname.* to ‘user’@’localhost’ identified by ‘password’

提示:更新了mysql库中的记录一定要重启mysql服务器才能使更新生效

FLUSH PRIVILEGES;

五、No Database Selected

翻译:没有数据库被选择上

分析:产生的原因有两种

config.inc.php 里面$dbname设置的不对。致使数据库根本不存在,所以在 $db->select_db($dbname); 时返回了false

和上面问题四是一样的,数据库用户没有select权限,同样会导致这样的错误。当你发现config.inc.php的设置没有任何问题,但还是提示这个错误,那一定就是这种情况了。

解决:对症下药

打开config.inc.php 找到$dbname核实重新配置并保存

同问题四的解决方法

六、Can’t open file: ‘xxx_forums.MYI’. (errno: 145)

翻译:不能打开xxx_forums.MYI

问题分析:

这种情况是不能打开 cdb_forums.MYI 造成的,引起这种情况可能的原因有:

1、服务器非正常关机,数据库所在空间已满,或一些其它未知的原因,对数据库表造成了损坏。

2、类 unix 操作系统下直接将数据库文件拷贝移动会因为文件的属组问题而产生这个错误。

解决方法:

1、修复数据表

可以使用下面的两种方式修复数据表:(第一种方法仅适合主机用户)

1)使用 myisamchk ,MySQL 自带了专门用户数据表检查和修复的工具 —— myisamchk 。更改当前目录到 MySQL/bin 下面,一般情况下只有在这个下面才能运行 myisamchk 命令。常用的修复命令为:myisamchk -r 数据文件目录/数据表名.MYI;

2)通过 phpMyAdmin 修复, phpMyAdmin 带有修复数据表的功能,进入到某一个表中后,点击“操作”,在下方的“表维护”中点击“修复表”即可。

注意:以上两种修复方式在执行前一定要备份数据库。

MYSQL报错怎么处理?

1、原因:可能是/usr/local/mysql/mysql.pid文件没有写的权限;

解决方法 :给予权限,执行 “chmod 775 /usr/local/mysql/ -R” 然后重新启动mysqld。

2、原因:可能进程里已经存在mysql进程;

解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysqld。

3、原因:可能是第二次在机器上安装mysql,有残余数据影响了服务的启动;

解决方法:去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。

4、原因:mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir);

解决方法:请在[mysqld]下设置这一行:datadir = /usr/local/mysql/data。

5、原因:skip-federated字段问题;

解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。

6、原因:错误日志目录不存在;

解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限。

7、原因:如果是centos系统,默认会开启selinux;

解决方法:关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试。

8、原因:log-bin路径错误;

解决方法:查看对应数据库下的error log,例如我的数据库为,/usr/local/mysql/var目录,其下的localhost.localdomain.err为错误日志,只要把其下的ib_logfile*删除即可,重启mysql即可。

一、Linux下MySQL的启动与停止

1、Mysql启动、停止、重启常用命令

a、启动方式

(1)使用 service 启动:

[root@localhost /]# service mysqld start (5.0版本是mysqld)

[root@szxdb etc]# service mysql start (5.5.7版本是mysql)

(2)使用 mysqld 脚本启动:

/etc/inint.d/mysqld start

(3)使用 safe_mysqld 启动:

safe_mysqld&

b、停止方式

(1)使用 service 启动:service mysqld stop

(2)使用 mysqld 脚本启动:/etc/inint.d/mysqld stop

(3)mysqladmin shutdown

c、重启方式

(1)使用 service 启动:

service mysqld restart

service mysql restart (5.5.7版本命令)

(2)使用 mysqld 脚本启动:

/etc/init.d/mysqld restart

分享一下Mysql常见的几个错误问题及解决方法

1.问题: mysql DNS反解:skip-name-resolve

错误日志有类似警告:

1.120119 16:26:04 [Warning] IP address '192.168.1.10' could not be resolved: Name or service not known

2.120119 16:26:04 [Warning] IP address '192.168.1.14' could not be resolved: Name or service not known

3.120119 16:26:04 [Warning] IP address '192.168.1.17' could not be resolved: Name or service not known

通过show processlist发现大量类似如下的连接:

1.|592|unauthenticated user|192.168.1.10:35320|NULL|Connect| |login|NULL|

2.|593|unauthenticated user|192.168.1.14:35321|NULL|Connect| |login|NULL|

3.|594|unauthenticated user|192.168.1.17:35322|NULL|Connect| |login|NULL|

skip-name-resolve 参数的作用:不再进行反解析(ip不反解成域名),这样可以加快数据库的反应时间。

修改配置文件添加并需要重启:

[mysqld]

skip-name-resolve

2.问题错误日志:Error: Can't create a new thread (errno 12)

数据库服务器问题,数据库操作无法创建新线程。一般是有以下3个方面的原因:

1)、MySQL 线程开得太多。

2)、服务器系统内存溢出。

3)、环境软件损坏或系统损坏。

【问题解决】

1.1)进入 phpmyadmin 的 mysql 数据库中的 user 表,对数据库的用户进行编辑,修改 max_connections 的值。适当的改小一点。

2.2)联系服务器管理员检查服务器的内存和系统是否正常,如果服务器内存紧张,请检查一下哪些进程消耗了服务器的内存,同时考虑是否增加服务器的内存来提高整个系统的负载能力。

3.3)mysql版本更改为稳定版本

4.4)优化网站程序的sql等等

3. 操作报错:ERROR 1010 (HY000): Error dropping database

1.mysql> drop database xjtrace;

2.ERROR 1010 (HY000): Error dropping database (can't rmdir './xjtrace/

在做数据库删除时出现这种提示,其原因是在database下面含有自己放进去的文件,譬如*.txt文件或*.sql文件等,只要进去把这个文件删了在执行。

1.mysql>drop database xjtrace;

2.Query OK, 0 rows affected (0.00 sec)

果断删除即可!!

4.导出数据很快,导入到新库时却很慢:

MySQL导出的SQL语句在导入时有可能会非常非常慢,经历过导入仅400万条记录,竟用了近2个小时。在导出时合理使用几个参数,可以大大加快导入的速度。

-e 使用包括几个VALUES列表的多行INSERT语法;

--max_allowed_packet=XXX 客户端/服务器之间通信的缓存区的最大大小;

--net_buffer_length=XXX TCP/IP和套接字通信缓冲区大小,创建长度达net_buffer_length的行

注意:max_allowed_packet和net_buffer_length不能比目标数据库的配置数值大,否则可能出错。

首先确定目标库的参数值

mysql> show variables like 'max_allowed_packet';

+--------------------+---------+

| Variable_name | Value |

+--------------------+---------+

| max_allowed_packet | 1048576 |

+--------------------+---------+

1 row in set (0.00 sec)

mysql> show variables like 'net_buffer_length';

+-------------------+-------+

| Variable_name | Value |

+-------------------+-------+

| net_buffer_length | 16384 |

+-------------------+-------+

1 row in set (0.00 sec)

根据参数值书写mysqlmp命令,如:

mysql>mysqlmp -uroot -p 数据库名 -e --max_allowed_packet=1048576 -net_buffer_length=16384 > SQL文件

例如:

1.mysql> mysqlmp -uroot -p xjtrace -e --max_allowed_packet=1048576 --net_buffer_length=16384 >xjtrace_data_`date +%F`.sql

之前2小时才能导入的sql现在几十秒就可以完成了。您可能感兴趣的文章:MySQL数据库导出与导入及常见错误解决MySQL的主从复制步骤详解及常见错误解决方法mysql常见的错误提示问题处理小结MySQL 常见错误分析与解决方法mysql常见错误集锦MySQL常见错误有哪些_MySQL常见错误的快速解决方法MySQL读取Binlog日志常见的3种错误Mysql主从数据库(Master/Slave)同步配置与常见错误MySQL中常见的八种SQL错误用法示例我的MYSQL是5.0版本的,运行总是会报错,请问如何解决?

1、可能是/opt/mysql-master/data/数据目录mysql用户没有权限(修改数据目录的权限)

解决方法 :给予权限,执行 "chown -R mysql.mysql /opt/mysql-master/data" 然后重新启动mysqld

2、可能进程里已经存在mysql进程

解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysqld!

3、可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。

解决方法:去mysql的二进制日志目录看看,如果存在mysql-binlog.index,就赶快把它删除掉吧

4、mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]下有没有指定数据目录(datadir)。

解决方法:请在[mysqld]下设置这一行:datadir = /opt/mysql-master/data

5、skip-federated字段问题

解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。

6、错误日志目录不存在

解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限

7、selinux惹的祸,如果是centos系统,默认会开启selinux

解决方法:

先临时改为警告模式:[root@www php]# setenforce 0然后打开/etc/sysconfig/selinux,把SELINUX=enforcing改为SELINUX=disabled

8、可以试着把mysql.cnf默认文件开启,排查是不是配置文件的错误。

常见配置错误有:

查看配置文件/etc/my.cnf里有没有innodb_buffer_pool_size这个参数

innodb_buffer_pool_size:主要作用是缓存innodb表的索引,数据,插入数据时的缓冲;

默认值:128M;专用mysql服务器设置此值的大小: 系统内存的70%-80%最佳。如果你的系统内存不大,查看这个参数,把它的值设置小一点吧

温馨提示:记得开启mysql错误日志,方便自己排错。

vim /etc/my.cnf 各位可以根据自己的my.cnf文件编辑[mysql_safe]

log-error = /data/mysql-master/logs/error.log

我的MYSQL是5.0版本的,运行总是会报错,请问如何解决?

1、可能是/opt/mysql-master/data/数据目录mysql用户没有权限(修改数据目录的权限)

解决方法 :给予权限,执行 "chown -R mysql.mysql /opt/mysql-master/data" 然后重新启动mysqld

2、可能进程里已经存在mysql进程

解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysqld!

3、可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。

解决方法:去mysql的二进制日志目录看看,如果存在mysql-binlog.index,就赶快把它删除掉吧

4、mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]下有没有指定数据目录(datadir)。

解决方法:请在[mysqld]下设置这一行:datadir = /opt/mysql-master/data

5、skip-federated字段问题

解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。

6、错误日志目录不存在

解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限

7、selinux惹的祸,如果是centos系统,默认会开启selinux

解决方法:

先临时改为警告模式:[root@www php]# setenforce 0然后打开/etc/sysconfig/selinux,把SELINUX=enforcing改为SELINUX=disabled

8、可以试着把mysql.cnf默认文件开启,排查是不是配置文件的错误。

常见配置错误有:

查看配置文件/etc/my.cnf里有没有innodb_buffer_pool_size这个参数

innodb_buffer_pool_size:主要作用是缓存innodb表的索引,数据,插入数据时的缓冲;

默认值:128M;专用mysql服务器设置此值的大小: 系统内存的70%-80%最佳。如果你的系统内存不大,查看这个参数,把它的值设置小一点吧

温馨提示:记得开启mysql错误日志,方便自己排错。

vim /etc/my.cnf 各位可以根据自己的my.cnf文件编辑[mysql_safe]

log-error = /data/mysql-master/logs/error.log

如何解决MySQL问题

1、情况一:MySQL的错误日志文件(安装目录\MYOA\data5\机器名.err)会记录如下内容:

InnoDB: Reading tablespace information from the .ibd files...

InnoDB: Error: trying to add tablespace 460 of name '.\td_oa\flow_data_35.ibd'

InnoDB: to the tablespace memory cache, but tablespace

InnoDB: 460 of name '.\td_oa\exam_data.ibd' already exists in the tablespace

解决方法:

1)剪切出安装目录\MYOA\data5\TD_OA的flow_data_35.ibd和flow_data_35.frm两个文件;

2)启动MySQL5_OA服务,使用备份的flow_data_35.sql导入到TD_OA库中。如果提示flow_data_35表已经存在不能导入,则继续按后续步骤执行;

3)在data5下手动建立tmp目录;

4)使用MySQL管理工具或MySQL命令行程序在tmp下建立名称为flow_data_35的表(包含一个字段即可);

5)将tmp下的flow_data_35.frm和flow_data_35.ibd拷贝到安装目录\MYOA\data5\TD_OA目录下;

6)在MySQL管理工具或MySQL命令行程序中,进入TD_OA库,使用“drop table flow_data_35;”命令清除公共表空间中残留的flow_data_35表的相关信息;

7)进入tmp库,删掉flow_data_35表;

8)使用备份的flow_data_35.sql导入到TD_OA库中;

9)如果还有其他表存在该问题,可重复执行4至8步骤。

2、情况二:MySQL的错误日志文件(安装目录\MYOA\data5\机器名.err)会记录如下内容:

130409 15:54:31 [Note] Plugin 'FEDERATED' is disabled.

130409 15:54:31 InnoDB: The InnoDB memory heap is disabled

130409 15:54:31 InnoDB: Mutexes and rw_locks use Windows interlocked functions

130409 15:54:31 InnoDB: Compressed tables use zlib 1.2.3

130409 15:54:32 InnoDB: Initializing buffer pool, size = 1023.0M

InnoDB: VirtualAlloc(1086849024 bytes) failed; Windows error 8

130409 15:54:32 InnoDB: Completed initialization of buffer pool

130409 15:54:32 InnoDB: Fatal error: cannot allocate memory for the buffer pool

130409 15:54:32 [ERROR] Plugin 'InnoDB' init function returned error.

130409 15:54:32 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.

130409 15:54:32 [ERROR] Unknown/unsupported storage engine: Innodb

130409 15:54:32 [ERROR] Aborting

解决方法:

此情况出现的原因是myoa\mysql5\my.ini中innodb_buffer_pool_size的值太大,OA服务器操作系统不支持所致。改小后再启动mysql5_OA服务即可,一般保持和数据库大小一致。数据库大小即是myoa/data5的大小。

3、情况三:mysql服务启动不了,事件查看器中显示:The syntax
'--log-slow-queries' is deprecated and will be removed in a future
release. Please use '--slow-query-log'/'--slow-query-log-file' instead.

解决方法:安装目录\MYOA\data5下的ibdata1、ib_logfile0、ib_logfile1文件属性被设置为只读导致,取消只读控制,重启mysql5_OA服务即可。

4、情况四:MySQL的错误日志文件(data5\机器名.err)会记录如下内容:InnoDB: No valid checkpoint found.

解决方法:此问题找不到检查点,数据库是无效的,此种情况,只能用热备份数据恢复。

5、以上四种情况,是2013版OA系统目前比较常见的mysql服务启动不了的现象和解决办法,大家可作参考,其他情况的话,再具体分析处理。

6、分析思路总结:遇到mysql5_OA服务启动不了的情况,首先查看myoa\data5下的错误日志文件,根据日志中的具体内容进行具体分析。

7、2013版MYSQL服务启动不了(可以尝试强制启动mysql服务)方法如下:

1)打开\MYOA\mysql5\my.ini,去掉innodb_force_recovery=1前边的注释。

2)启动MySQL5_OA服务,此时MySQL处于只读状态,可以导出,不可写入。如果仍不能启动,可以尝试将innodb_force_recovery修改为2、3、4、5、6等,直到可以启动为止。

3)使用MySQL管理工具,将TD_OA等相关的数据库导出为SQL文件。

4)停止MySQL5_OA服务,删除TD_OA下的所有文件、ibdata1、ib_logfile0、ib_logfile1等文件。

5)打开\MYOA\mysql5\my.ini,在innodb_force_recovery=1前边加上#号,将该项注释掉。

6)启动MySQL5_OA服务,然后导入此前备份的SQL文件。

7)检查数据库,将无法通过该方法恢复的数据表,通过之前自动备份的SQL文件进行恢复。

如何解决MySQL问题

1、情况一:MySQL的错误日志文件(安装目录\MYOA\data5\机器名.err)会记录如下内容:

InnoDB: Reading tablespace information from the .ibd files...

InnoDB: Error: trying to add tablespace 460 of name '.\td_oa\flow_data_35.ibd'

InnoDB: to the tablespace memory cache, but tablespace

InnoDB: 460 of name '.\td_oa\exam_data.ibd' already exists in the tablespace

解决方法:

1)剪切出安装目录\MYOA\data5\TD_OA的flow_data_35.ibd和flow_data_35.frm两个文件;

2)启动MySQL5_OA服务,使用备份的flow_data_35.sql导入到TD_OA库中。如果提示flow_data_35表已经存在不能导入,则继续按后续步骤执行;

3)在data5下手动建立tmp目录;

4)使用MySQL管理工具或MySQL命令行程序在tmp下建立名称为flow_data_35的表(包含一个字段即可);

5)将tmp下的flow_data_35.frm和flow_data_35.ibd拷贝到安装目录\MYOA\data5\TD_OA目录下;

6)在MySQL管理工具或MySQL命令行程序中,进入TD_OA库,使用“drop table flow_data_35;”命令清除公共表空间中残留的flow_data_35表的相关信息;

7)进入tmp库,删掉flow_data_35表;

8)使用备份的flow_data_35.sql导入到TD_OA库中;

9)如果还有其他表存在该问题,可重复执行4至8步骤。

2、情况二:MySQL的错误日志文件(安装目录\MYOA\data5\机器名.err)会记录如下内容:

130409 15:54:31 [Note] Plugin 'FEDERATED' is disabled.

130409 15:54:31 InnoDB: The InnoDB memory heap is disabled

130409 15:54:31 InnoDB: Mutexes and rw_locks use Windows interlocked functions

130409 15:54:31 InnoDB: Compressed tables use zlib 1.2.3

130409 15:54:32 InnoDB: Initializing buffer pool, size = 1023.0M

InnoDB: VirtualAlloc(1086849024 bytes) failed; Windows error 8

130409 15:54:32 InnoDB: Completed initialization of buffer pool

130409 15:54:32 InnoDB: Fatal error: cannot allocate memory for the buffer pool

130409 15:54:32 [ERROR] Plugin 'InnoDB' init function returned error.

130409 15:54:32 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.

130409 15:54:32 [ERROR] Unknown/unsupported storage engine: Innodb

130409 15:54:32 [ERROR] Aborting

解决方法:

此情况出现的原因是myoa\mysql5\my.ini中innodb_buffer_pool_size的值太大,OA服务器操作系统不支持所致。改小后再启动mysql5_OA服务即可,一般保持和数据库大小一致。数据库大小即是myoa/data5的大小。

3、情况三:mysql服务启动不了,事件查看器中显示:The syntax
'--log-slow-queries' is deprecated and will be removed in a future
release. Please use '--slow-query-log'/'--slow-query-log-file' instead.

解决方法:安装目录\MYOA\data5下的ibdata1、ib_logfile0、ib_logfile1文件属性被设置为只读导致,取消只读控制,重启mysql5_OA服务即可。

4、情况四:MySQL的错误日志文件(data5\机器名.err)会记录如下内容:InnoDB: No valid checkpoint found.

解决方法:此问题找不到检查点,数据库是无效的,此种情况,只能用热备份数据恢复。

5、以上四种情况,是2013版OA系统目前比较常见的mysql服务启动不了的现象和解决办法,大家可作参考,其他情况的话,再具体分析处理。

6、分析思路总结:遇到mysql5_OA服务启动不了的情况,首先查看myoa\data5下的错误日志文件,根据日志中的具体内容进行具体分析。

7、2013版MYSQL服务启动不了(可以尝试强制启动mysql服务)方法如下:

1)打开\MYOA\mysql5\my.ini,去掉innodb_force_recovery=1前边的注释。

2)启动MySQL5_OA服务,此时MySQL处于只读状态,可以导出,不可写入。如果仍不能启动,可以尝试将innodb_force_recovery修改为2、3、4、5、6等,直到可以启动为止。

3)使用MySQL管理工具,将TD_OA等相关的数据库导出为SQL文件。

4)停止MySQL5_OA服务,删除TD_OA下的所有文件、ibdata1、ib_logfile0、ib_logfile1等文件。

5)打开\MYOA\mysql5\my.ini,在innodb_force_recovery=1前边加上#号,将该项注释掉。

6)启动MySQL5_OA服务,然后导入此前备份的SQL文件。

7)检查数据库,将无法通过该方法恢复的数据表,通过之前自动备份的SQL文件进行恢复。

mysql安装不上怎么办mysql安装失败原因和解决方法

mysql数据库安装不了了!mysql最后一步安装不上!mysql就是安装不上!是不是很头疼,很伤脑筋,现在大家不用着急了,小编为大家整理了mysql安装失败的原因以及mysql安装失败的解决方法,抓紧来看看吧!

困难1:MySQL 5.1 安装过程中报apply security setting错误

1.卸载MySQL。

2.删除目录 C:Documents and SettingsAll UsersApplication DataMySQL。

3.重新安装MySQL就OK啦。

困难2:MySQL提示Could not start the service MySQL提示

安装mysql 5.1.33,在运行Server Instance Configuration wizard时的Execute configurattion步骤中的第三项Start Service进出错,错误提示为Could not start the service MySQL

分析:这种情况一般是因为装过mysql,卸载不干净造成的,卸载后重启后再重装。注意看下服务,如果未能卸载,可以用mysqld-nt -remove卸载。

具体方法如下:

1.查看服务中有没有mysql,如果有将该服务停掉。

2.在控制面板中运行添加删除程序,将mysql卸载。

3.卸载后打开注册表,查看HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices 下的键值,如果有相关mysql键值(mysql、mysqladmin)则删掉,即可。

4.重启,将mysql的安装残余目录删掉 (查看服务,此时服务中已没有mysql)。

5.重新安装mysql.安装后先不要运行Server Instance Configuration wizard,重启后在开始菜单中运行该向导,即可。

困难3:msyql安装到最后一步start service错误

1.到控制面板里面先把mysql删除。

2.到c盘C:Program Files目录下把mysql目录删除。

3.如果在其他盘还有设置目录也要删除.空目录也要删除。

4.到regedit把注册表:

HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/Eventlog/Applications/MySQL

HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/Services/Eventlog/Applications/MySQL

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Eventlog/Applications/MySQL

有的话,全部删除!(技巧:用F3循环查找“mysql”)5.如果任务管理器里有关mysql内容也删除。

5.把防火墙关了。

6.重新装mysql(这里我没有重启计算机)。

重装时候有必要的话,重启计算机,停用IIS,和删除temp里的临时文件。

实在不行的话,配置mysql时候,把mysql服务换个服务名。

精彩专题分享:

mysql不同版本安装教程

mysql5.7各版本安装教程

mysql5.6各版本安装教程

mysql8.0各版本安装教程

如何解决Mysql启动报ERROR:2002的分析

这篇文章主要给大家介绍了关于Mysql启动时报ERROR:2002问题的分析与解决方法,文中通过示例代码介绍将该问题分析的非常详细,对同样遇到这个问题的朋友们具有一定的参考学习价值,需要的朋友们下面来一起看看吧。

前言

本文主要给大家介绍了关于Mysql启动报ERROR:2002的分析与解决,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

1、故障现象

[root@localhost scripts]# mysql -u root

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysqld.sock' (2)2、故障分析

查看mysql实例的状态

[root@localhost scripts]# netstat -ntlp | grep 3306

tcp 0 0 :::3306 :::* LISTEN 13001/mysqld查看my.cnf关于socket的配置

[root@localhost scripts]# more /etc/my.cnf |grep sock

socket = /tmp/mysqld.sock也就是说mysqld已经声称了正确的sock文件,但客户端连接还是从初始目录去找sock文件

下面查看后台日志,有个ERROR,是关于满查询日志的,是由于目录不存在而产生的错误,与当前故障无关

[root@localhost scripts]# more SZDB.err

............

2014-10-11 13:17:21 13001 [Note] InnoDB: 5.6.12 started; log sequence number 1625997

/app/soft/mysql/bin/mysqld: File '/log/mysql_logs/slowquery.log' not found (Errcode: 2 - No such file or directory)

2014-10-11 13:17:21 13001 [ERROR] Could not use /log/mysql_logs/slowquery.log for logging (error 2). Turning logging off for the who

le ration of the MySQL server process. To turn it on again: fix the cause, shutdown the MySQL server and restart it.

2014-10-11 13:17:21 13001 [Note] Server hostname (bind-address): '*'; port: 3306

2014-10-11 13:17:21 13001 [Note] IPv6 is available.

2014-10-11 13:17:21 13001 [Note] - '::' resolves to '::';

2014-10-11 13:17:21 13001 [Note] Server socket created on IP: '::'.

2014-10-11 13:17:21 13001 [Note] Event Scheler: Loaded 0 events

2014-10-11 13:17:21 13001 [Note] /app/soft/mysql/bin/mysqld: ready for connections.

Version: '5.6.12-log' socket: '/tmp/mysql.sock' port: 3306 Source distribution

#Author :Leshami

#Blog : http://www.linuxidc.com3、解决故障

a、通过配置my.cnf mysql选项socket文件位置解决

先停止mysql服务器

[root@localhost scripts]# systemvtl restart mysqld

Shutting down MySQL.[ OK ]修改my.cnf,如下

[root@localhost scripts]# vi /etc/my.cnf

[mysql]

no-auto-rehash

socket = /tmp/mysqld.sock #添加该行重启mysql服务器

[root@localhost scripts]# systemctl restart mysqld

Starting MySQL..[ OK ]再次连接正常

[root@localhost scripts]# mysql -uroot -p

Enter password:

mysql> show variables like 'version';

+---------------+------------+

| Variable_name | Value |

+---------------+------------+

| version | 5.6.12-log |

+---------------+------------+b、为socket文件建立链接方式

[root@SZDB mysqldata]# ln -s /tmp/mysql.sock /data/mysqldata/mysql.sock

ln: creating symbolic link `/data/mysqldata/mysql.sock' to `/tmp/mysql.sock': File exists

[root@SZDB mysqldata]# rm mysql.sock #上面提示文件存在,所以删除之前的mysql.sock文件

[root@SZDB mysqldata]# ln -s /tmp/mysql.sock /data/mysqldata/mysql.sock

[root@SZDB mysqldata]# ls -hltr mysql.sock

lrwxrwxrwx 1 root root 15 Oct 11 14:00 mysql.sock -> /tmp/mysql.sock

[root@SZDB mysqldata]# mysql -uroot -p

Enter password:

mysql> show variables like 'socket';

+---------------+-----------------+

| Variable_name | Value |

+---------------+-----------------+

| socket | /tmp/mysql.sock |

+---------------+-----------------+总结

Top