MySQL问题集锦

1.c3p0连接池连接MySql数据库,当c3p0设置的最大连接数c3p0.max_size超过了MySQL设置的最大连接数max_connections,一旦系统使用的连接数超过了max_connections,就会报以下异常:

2012-9-15 12:00:26 com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector run
警告: com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@1c5d81c -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!

......

所以解决这个问题的方法就是修改MySQL的最大连接数,MySQL默认的最大连接数是100。

在mysql安装目录下的my.ini文件中的[mysqld]下加上:

max_connections=1000


2.mysql数据库连接超时(wait_timeout)问题

当系统与mysql数据库建立连接后,如果两次数据库操作的间隔时间超过了 8 小时(默认),数据库会自动断开连接,再次访问就会抛出异常。

一般的解决方法大多是在连接数据库的url后面加上“autoReconnect=true”自动重连,但是这只对 mysql4 以前的版本有效,在mysql5.0以上版本是无效的。

解决方法

修改mysql数据库的系统变量wait_timeout和interactive_timeout。

MySQL5手册中对两个变量有如下的说明: 
    interactive_timeout:服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。又见wait_timeout 
    wait_timeout:服务器关闭非交互连接之前等待活动的秒数。在线程启动时,根据全局wait_timeout值或全局interactive_timeout值初始化会话wait_timeout值,取决于客户端类型(由mysql_real_connect()的连接选项CLIENT_INTERACTIVE定义),又见interactive_timeout 

两个变量是共同控制的,必须对它们都进行修改,wait_timeout的取值范围是1-2147483(Windows),1-31536000(linux),interactive_time取值随wait_timeout变动,它们的默认值都是28800。

在mysql安装目录下的my.ini文件中的[mysqld]下加上:

wait_timeout=2073600
interactive_timeout=2073600

重启数据库服务。

MySQL下mysql.sock丢失问题的解决[linux, mysqld.sock]

MySQL下mysql.sock丢失丢失的原因一般是因为配置文件不一致的原因,mysqld 错误启动,mysqld_safe 会清除一次mysql.sock 。解决方法是:

判断一般人解决故障时没有切换到mysql用户,造成权限有问题,无法创建mysql授权表,所以也就无法创建/tmp/mysql.sock 和hostname.pid文件。因此,总结解决方法如下(注: 使用root也可以):

#su mysql

$/usr/bin/mysql_install_db //重建授权表

$/usr/bin/mysqld_safe &

$/usr/bin/mysql //测试

mysq>bye;

$

文件已经解决,重新生成新的 /tmp/mysql.sock 和 hostname.pid

$su root

未完待续...


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值