mysql自动关闭服务、连接限制等问题的解决方法
2011-03-02 11:33
通过mysql服务器端程序mysql Administrator调整连接参数。
将max_connections max_updates max_questions三项数据调整到很大的数字,那么你有限的操作将不会导致数据库服务的终止了
在MySQL数据库中,如果一个连接8小时没有请求和操作,就会自动断开,从而导致一些基于数据库连接的应用程序,特别是 WEB 应用程序出错。
有三个方法可以解决这个问题:
1:修改MySQL配置参数
2:修改JDBC
3:修改第三方的数据库连接池应用 l
方法一:这个参数的名称是 wait_timeout,其默认值为 28800秒(8小时)。其意义为关闭一
将max_connections max_updates max_questions三项数据调整到很大的数字,那么你有限的操作将不会导致数据库服务的终止了
在MySQL数据库中,如果一个连接8小时没有请求和操作,就会自动断开,从而导致一些基于数据库连接的应用程序,特别是 WEB 应用程序出错。
有三个方法可以解决这个问题:
1:修改MySQL配置参数
2:修改JDBC
3:修改第三方的数据库连接池应用 l
方法一:这个参数的名称是 wait_timeout,其默认值为 28800秒(8小时)。其意义为关闭一
个连接之前在这个连接上等到行动的秒数,也就是说,如果一个连接闲置超过这个选项所设置的秒数,MySQL 会主动断开这个连接。
修改操作:
linux下打开/etc/myf,在属性组mysqld下面添加参数如下:
[mysqld]
interactive_timeout=28800000
wait_timeout=28800000
windows下打开my.ini,增加:
interactive_timeout=28800000
wait_timeout=28800000
有实践表明,没有办法把这个值设置成无限大,即永久。因此如果你无法保证你的应用程序必定在设定的秒数内至少有一次操作,那么最好用第二个方法解决这个问题。
方法二:修改如下JDBC连接的mybatis是什么类型的框架 URL:
修改操作:
linux下打开/etc/myf,在属性组mysqld下面添加参数如下:
[mysqld]
interactive_timeout=28800000
wait_timeout=28800000
windows下打开my.ini,增加:
interactive_timeout=28800000
wait_timeout=28800000
有实践表明,没有办法把这个值设置成无限大,即永久。因此如果你无法保证你的应用程序必定在设定的秒数内至少有一次操作,那么最好用第二个方法解决这个问题。
方法二:修改如下JDBC连接的mybatis是什么类型的框架 URL:
jdbc:mysql://hostaddress:3306/schemaname?autoReconnect=true
添加 autoReconnect=true 这个参数,即能解决这个问题。
方法三:配置文件(l):
<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
<proxool>
<!-- proxool别名中文urlencode在线 -->
<alias>mysql</alias>
<!-- 数据库连接URL -->
<driver-url> jdbc:mysql://localhost/yourDatebase?useUnicode=true&characterEncoding=UTF-8</driver-url>
<!-- JDBC驱动名称 -->
<driver-class&sql.jdbc.Driver</driver-class>
<!-- 数据库连接帐号 -->
添加 autoReconnect=true 这个参数,即能解决这个问题。
方法三:配置文件(l):
<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
<proxool>
<!-- proxool别名中文urlencode在线 -->
<alias>mysql</alias>
<!-- 数据库连接URL -->
<driver-url> jdbc:mysql://localhost/yourDatebase?useUnicode=true&characterEncoding=UTF-8</driver-url>
<!-- JDBC驱动名称 -->
<driver-class&sql.jdbc.Driver</driver-class>
<!-- 数据库连接帐号 -->
loess<driver-properties>
<property name="user" value="root" />
<property name="password" value="password" />
</driver-properties>
<!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁 -->
<house-keeping-sleep-time>90000</house-keeping-sleep-time>
<!-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受 -->
<maximum-new-connections>20</maximum-new-connections>
<!-- 最少保持的空闲连接数 -->
<prototype-count>3</prototype-count>
<!-- 允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定 -->
<maximum-connection-count>20</maximum-connection-count>
<property name="user" value="root" />
<property name="password" value="password" />
</driver-properties>
<!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁 -->
<house-keeping-sleep-time>90000</house-keeping-sleep-time>
<!-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受 -->
<maximum-new-connections>20</maximum-new-connections>
<!-- 最少保持的空闲连接数 -->
<prototype-count>3</prototype-count>
<!-- 允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定 -->
<maximum-connection-count>20</maximum-connection-count>
<!-- 最小连接数 -->
<minimum-connection-count>3</minimum-connection-count>
<!-- 在分配连接前后是否进行有效性测试,这个是解决本问题的关键 -->
<test-before-use>true</test-before-use>
<test-after-use>true</test-after-use>
<!-- 用于测试的SQL语句 一定要写(不知道问什么)-->
<house-keeping-test-sql>SELECT CURRENT_USER</house-keeping-test-sql>
</proxool>
</something-else-entirely>
三、开始菜单-运行-services.msc
到mysql的服务并双击
点击恢复选项卡
<minimum-connection-count>3</minimum-connection-count>
<!-- 在分配连接前后是否进行有效性测试,这个是解决本问题的关键 -->
<test-before-use>true</test-before-use>
<test-after-use>true</test-after-use>
<!-- 用于测试的SQL语句 一定要写(不知道问什么)-->
<house-keeping-test-sql>SELECT CURRENT_USER</house-keeping-test-sql>
</proxool>
</something-else-entirely>
三、开始菜单-运行-services.msc
到mysql的服务并双击
点击恢复选项卡
第一次失败:默认是“不操作”,改成"mysql无法连接到服务器重新启动服务"。
在下方的“重新启动服务:___分钟后”添上“0”表示如果服务意外终止则立即重启动。
点击确定使设置生效。
MySQL服务无法启动 系统发生1058错误
现象:mysql 服务无法启动,系统发生1058错误
我的mysql原安装好的,后来用360安全卫士把服务禁掉,然后用mysqld-nt standalone启动,现在我想把服务重
新启动,却无法启动.
解决方法:
◆1、运行
D:\mysql\bin>mysqld-nt -remove
Service successfully removed.
D:\mysql\bin>mysqld-nt -install
Service successfully installed.
D:\mysql\bin>net start mysql
MySQL 服务正在启动 .
MySQL 服务已经启动成功。
◆2、检查my.ini or myf是否正常?
试一试把%SystemRoot%\my.ini 改成这样
[mysqld]
basedir=D:/mysql
datadir=D:/mysql/data
default-character-set= gbk
[WinMySQLadmin]
Server=D:/mysql/
◆3. 把my.ini 和 myf 复制到 系统盘XX:\WINDOWS\system32下, 注意在配置环境中的一些路径是否一致
在手册的第二章2.3.14节有专门针对你所出现问题的描述及解决办法:
---------------------------------------------------------------------------------------------------------------------------------
下面具体说明了首次安装并启动MySQL服务时会遇到的最常见的错误消息:
· System error 1067 has occurred.
· Fatal error: Can't open privilege tables: Table 'mysql.host' doesn't exist
· 当MySQL服务器不到MySQL权限数据库或关键文件时会出现这些消息。当MySQL基本数据目录没有安装在默认位置(C:\mysql和 C:\Program Files\MySQL\MySQL Server 5.1\data),而是安装到其它位置时通常会遇到该问题。
发生该问题的一种情况是对MySQL进行升级或安装到了新位置,但是没有对配置文件进行更新以对应新的安装位置。此外还可能是新旧配置文件冲突,当升级MySQL时,一定要删
---------------------------------------------------------------------------------------------------------------------------------
下面具体说明了首次安装并启动MySQL服务时会遇到的最常见的错误消息:
· System error 1067 has occurred.
· Fatal error: Can't open privilege tables: Table 'mysql.host' doesn't exist
· 当MySQL服务器不到MySQL权限数据库或关键文件时会出现这些消息。当MySQL基本数据目录没有安装在默认位置(C:\mysql和 C:\Program Files\MySQL\MySQL Server 5.1\data),而是安装到其它位置时通常会遇到该问题。
发生该问题的一种情况是对MySQL进行升级或安装到了新位置,但是没有对配置文件进行更新以对应新的安装位置。此外还可能是新旧配置文件冲突,当升级MySQL时,一定要删
除或重新命名旧的配置文件。
如果你没有将MySQL安装到C:\Program Files\MySQL\MySQL Server 5.1目录下,而是安装到了其它目录下,你需要通过使用配置(my.ini)文件让MySQL服务器知道安装目录。my.ini文件应位于Windows 目录下,典型为C:\WINNT或C:\WINDOWS。可以在命令提示符下输入下面的命令从WINDIR环境变量值中确定确切位置:
C:\> echo %WINDIR%
可以通过文本编辑器(例如记事本)来创建并修改选项文件。例如,如果php文件列表MySQL安装在E:\mysql下,数据目录在D:\MySQLdata,你可以创建选项文件并设置[mysqld]来指定basedir和datadir参数的值:
[mysqld]
# set basedir to your installation path
basedir=E:/mysql
如果你没有将MySQL安装到C:\Program Files\MySQL\MySQL Server 5.1目录下,而是安装到了其它目录下,你需要通过使用配置(my.ini)文件让MySQL服务器知道安装目录。my.ini文件应位于Windows 目录下,典型为C:\WINNT或C:\WINDOWS。可以在命令提示符下输入下面的命令从WINDIR环境变量值中确定确切位置:
C:\> echo %WINDIR%
可以通过文本编辑器(例如记事本)来创建并修改选项文件。例如,如果php文件列表MySQL安装在E:\mysql下,数据目录在D:\MySQLdata,你可以创建选项文件并设置[mysqld]来指定basedir和datadir参数的值:
[mysqld]
# set basedir to your installation path
basedir=E:/mysql
# set datadir to the location of your data directory
datadir=D:/MySQLdata
请注意应使用(正)斜线而不是反斜线在选项文件中指定Windows路径名。如果使用反斜线,则必须使用双斜线:
phew[mysqld]
# set basedir to your installation path
basedir=C:\\Program Files\\MySQL\\MySQL Server 5.1
# set datadir to the location of your data directory
datadir=D:\\MySQLdata
如果在MySQL配置文件中更改datadir值,在重新启动MySQL服务器之前,必须移动已有MySQL数据目录中的内容。
datadir=D:/MySQLdata
请注意应使用(正)斜线而不是反斜线在选项文件中指定Windows路径名。如果使用反斜线,则必须使用双斜线:
phew[mysqld]
# set basedir to your installation path
basedir=C:\\Program Files\\MySQL\\MySQL Server 5.1
# set datadir to the location of your data directory
datadir=D:\\MySQLdata
如果在MySQL配置文件中更改datadir值,在重新启动MySQL服务器之前,必须移动已有MySQL数据目录中的内容。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论