我们知道,任何数据库在使用过程中,发生异常是不可避免的。本文我们对MySQL数据库使用过程中的一些相关异常处理进行了总结,接下来就让我们来一起了解这一部分内容吧。
问题一:启动mysql时候出现Starting MySQL..Manager of pid-file quit without updating f[失败] Starting MySQL...Manager of pid-file quit without updating [失败]
解决方案:
第一种:
1.删除 /usr/local/mysql/data/mysql-bin.* 文件夹所有临时文件数字后缀名。
2.重启mysql(用二进制安装后,重启的方法)service mysqld start。
第二种:
编辑/etc/my.cnf 添加:
class="dp-xml">
- [mysqld]
- datadir=/var/lib/mysql
MySQL服务器把数据库存储在由datadir变量所定义的目录中。
查看已有进程之后杀掉:
- ps -aux|grep mysql
- 8016 pts/2 00:00:00 mysqld_safe
- 8037 pts/2 00:00:00 mysqld
重启mysql。
第三种:
在/etc/my.cnf中注释掉
skip-federated =>#skip-federated
第四种:
有时候在/etc/my.cnf中设置了datadir=/var/lib/mysql重启mysql就会出现这种错误。
若不单独设置,mysql默认数据目录为mysql安装目录下。
问题二:当让系统自己生成库时候,出现FATAL ERROR: Could not find ./bin/my_print_defaults。
解决方案:/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
问题三:mysql_connect() [<a href='function.mysql-connect'>function.mysql-connect</a>]: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13) /eccore/model/mysql.php 94或者Starting MySQL/etc/init.d/mysql: line 327: --socket=/var/lib/mysql/mysql.sock。
解决方案:
1> 加入如下代码 ,让mysql去tmp文件夹应用这个文件,以前默认为/var/lib/mysql/mysql.sock 这个地址。
修改/etc/my.cnf
- [mysql]
- socket=/tmp/mysql.sock
2> 进入/tmp文件夹创建mysql.sock
touch mysql.sock
3> 重启mysql
/etc/init.d/mysqld restart
问题四:A主机mysql访问B主机mysql:mysql -uroot -proot -P3306 -h192.168.100.52 出现如下错误:ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.100.52' (113)
解决方案:
1. 服务器要能在网(公网)上被访问到,如果有防火墙,要开放3306端口(MySQL 默认的监听端口);
关闭所有防火墙/etc/rc.d/init.d/iptables stop
加入规则vim /etc/sysconfig/iptables
2. 在mysql服务器上建立一个远程用户,最简单的方式就是
grant ALL PRIVILEGES on *.* to username@"%" identified by "root"
问题五:出现MySQL server has gone away有几种情况。
解决方案:
1、应用程序(比如PHP)长时间的执行批量的MYSQL语句。
解决方案:
在my.cnf文件中添加或者修改以下两个变量:
- wait_timeout=2880000
- interactive_timeout = 2880000
关于两个变量的具体说明可以google或者看官方手册。
如果不能修改my.cnf,则可以在连接数据库的时候设置CLIENT_INTERACTIVE,比如:
- sql = "set interactive_timeout=24*3600";
- mysql_real_query(...)
2、执行一个SQL,但SQL语句过大或者语句中含有BLOB或者longblob字段。比如,图片数据的处理。
解决方案:
在my.cnf文件中添加或者修改以下变量:
max_allowed_packet = 10M(也可以设置自己需要的大小)
max_allowed_packet 参数的作用是,用来控制其通信缓冲区的最大长度。
关于MySQL数据库的一些相关异常处理的总结就介绍到这里了,希望本次的介绍能够对您有所收获。