`
duming115
  • 浏览: 114261 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Mysql 中的autoReconnect=true参数

阅读更多
1. 即使在创建Mysql时url中加入了autoReconnect=true参数,一但这个连接两次访问数据库的时间超出了服务器端wait_timeout的时间限制,还是会CommunicationsException: The last packet successfully received from the server was xxx milliseconds ago.
2. 服务器端的参数可以用
  show global variables like 'wait_timeout';
  set global wait_timeout=10;
  来进行设置,但是wait_timeout值不应该设的太高.
3. 较好的策略是对处于idle状态的connection定时发送一个sql,来刷新服务器上的时间戳.这可以使用c3p0r的连接池.http://bzhang.iteye.com/blog/321832
4. 对于tomcat的server.xml中使用的连接池,http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html,http://commons.apache.org/dbcp/configuration.html使用DBCP的连接池可以采用
<Resource name="jdbc/test" auth="Container" 
              type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" 
              url="jdbc:mysql://localhost:3306/test?characterEncoding=utf-8" 
              username="root" password="test" maxActive="500" maxIdle="10" 
              maxWait="-1" timeBetweenEvictionRunsMillis="10000" minEvictableIdleTimeMillis="10000" />
  4.1 设置validationQuery,这样每次borrow(默认为开启)时会通过这个sql校验连接的有效性,但是增加了时间.
  4.2 设置timeBetweenEvictionRunsMillis="10000" minEvictableIdleTimeMillis="10000" 依赖evictor thread线程来把超时的连接关闭.
  4.3 设置testWhileIdle="true" timeBetweenEvictionRunsMillis="10000" validationQuery="select 1" 使得定时去用query检测处于idle状态的连接,也就刷新了服务器端的时间.

5.每次提交的最大packet大小
show global variables like 'max_allowed_packet';
set global max_allowed_packet=1024*1024;

6. SQLyog 中连接参数的设置
  6.1 在SQLyog中的设置 set autocommit=0,这样当前连接的自动提交为false,可以控制事务了.
  6.2 begin; 事务开始
  6.3 select * from test where 1=1 and id =1 for update;这样就把选到的记录行锁上了,再开一个SQLyog,也执行以上相同的操作,就会一直wait在那里.
  6.4 commit; 提交
  6.5 rollback; 回滚
  6.6 set autocommit=0;后应该加上
      set transaction isolation level read committed;
      这样其它客户端就能看到commit的数据,
  疑问:
      如果不设置set transaction isolation level read committed;如果两个客户端都select 相同的数据,一个客户端修改然后提交,另一个客户端不提交当前事务的前提下,去执行select ,取不到另一客户端提交的数据,不知道SQLyog默认的事务级别是什么样的.

7. SQLyog中查看mysql的状态,show global variables like '%lock%'; 是个好方法.对于事务锁(例如for update)报Lock wait timeout exceeded ,只能通过修改my.ini文件innodb_lock_wait_timeout = 100;才能生效.

8. linux下修改用户密码 mysqladmin -u root password "new_pass"
分享到:
评论
1 楼 85757916 2014-11-04  
前来学习!!

相关推荐

    hibernate自动重新连接数据库proxool的使用

    为了设置自动重连策略,我们需要在`Proxool`的配置中指定一些参数。例如,我们可以设置`hibernate.proxool.max_retries`表示连接失败后尝试重连的最大次数,`hibernate.proxool.retry_interval`表示两次重连尝试之间...

    基于springboot的一个IT人才招聘网站系统源码+数据库+部署文档,公司可以发布岗位需求,求职者查找岗位并递交简历等

    serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false username: root password: 123456 默认用户名和密码为 root / 123456 默认数据库名为:...

    bbs论坛源码jsp版

    useUnicode=true&characterEncoding=GB2312&autoReconnect=true jdbc.username.mysql=root jdbc.password.mysql=root 3、 Web容器:tomcat6.x 4、 页面访问路径: 论坛首页: http://localhost:8080/bbs 后台管理...

    Mysql JDBC Url参数说明

    这篇博文将详细解释MySQL JDBC URL的各个参数及其用途。 首先,JDBC URL的基本格式如下: ```text jdbc:mysql://[hostname]:[port]/[database]?[parameters] ``` - `jdbc:mysql://` 是固定的协议前缀,表示使用...

    基于springboot的一个IT人才招聘网站系统源码+数据库+部署文档(高分毕业设计)

    基于springboot的一个IT人才招聘...serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false username: root password: 123456 默认用户名和密码为 root /

    学生选课系统学年设计(jsp,servlet,mysql,tomcat)

    maxWait="10000" username="(此处填你的数据库用户名)" password="(此处填你的数据库密码)" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/ccs?autoReconnect=true" /&gt; ...

    生产环境高可用Nacos集群

    在安装 MySQL 之前,需要下载 MySQL 5.6.5+2.1 导入初始化脚本,找到 conf/nacos-mysql.sql,然后将其导入到数据库中。节点端口为 127.0.0.1:8848、127.0.0.1:8849、127.0.0.1:8850。 三、配置数据库连接 找到 ...

    经过改造可以修改Apache James邮件账户密码的WebMail Claros Intouch2

    autoReconnect=true&#38;characterEncoging=utf8&#38;zeroDateTimeBehavior=convertToNull 3. 完整的配置参数参考intouch2.war!\WEB-INF\config\config.xml 4. 配置文件config.xml中的mail.upflow.com换成实际的...

    基于SpringBoot的学生成绩管理系统.zip-7

    一.开发环境 IDEA + JDK8 + MySQL5.7 + navicate 二.技术栈 Springboot+Mybatis+layui 三....数据库地址url修改为 spring.datasource.url=jdbc:mysql://localhost:3306/score?...autoReconnect=true&use

    代码审计[java 安全编程] - T00LS

    user=root&password=123456&useUnicode=true&characterEncoding=utf8&autoReconnect=true"; String sql = "select * from user where id=" + id; ModelAndView mav = new ModelAndView("test2"); try{ Class....

    MySQL wait_timeout连接超时

    3. **使用`autoReconnect=true`属性**:如果你的应用使用的是MySQL的JDBC驱动,可以在连接字符串中添加`autoReconnect=true`属性。这将使驱动在检测到连接断开后尝试重新建立连接。然而,这种方法并非总是可靠,因为...

    Tomcat6.0+MyEclipse6.0+mysql5.0数据库连接池配置!.pdf

    autoReconnect=true`,其中`localhost`是服务器地址,`3306`是MySQL的默认端口,`bbs`是数据库名,`autoReconnect=true`确保在连接断开后能自动重连。 3. `username`和`password`:数据库的用户名和密码,这里设置为...

    c3p0-0.9.5.2jar和mysql8.0.11jdbc

    autoReconnect=true &lt;property name="user"&gt;root &lt;property name="password"&gt;password &lt;property name="initialPoolSize"&gt;10 &lt;property name="minPoolSize"&gt;10 &lt;property name="maxPoolSize"&gt;20 ...

    nacos-server-1.1.4 已编译支持支持mysql 8.0

    修改mysql 8.0版本使用 server.servlet.context...characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8 db.user=root db.password=123456

    nacos插件-mysql-connector-java-8.0.19.zip

    同时,为了确保Nacos能够识别并加载MySQL插件,还需要在启动参数中加入相应的配置,如`-Dnacos.plugin.jdbc.mysql.enabled=true`。 总结起来,"nacos插件-mysql-connector-java-8.0.19.zip"提供的MySQL Connector/J...

    java微信商城完整源码数据库 MySQL源码类型 WebForm

    true&characterEncoding\=UTF-8&autoReconnect\=true 4、重启Tomcat。 后台路径:http://域名/admin 后台用户名:admin 密码:admin 后台功能:系统设置、管理员列表、文章栏目、文章管理、产品管理、留言管理

    jira使用MySql数据库

    autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF8" validationQuery="Select 1" maxActive="20" /&gt; ``` 五、修改entityengine.xml文件 修改jira安装目录下的WEB-INF/classes/entityengine.xml...

    常用JDBC驱动与连接字符串整理.docx

    在使用数据库连接池时,如C3P0、HikariCP或Apache DBCP等,建议添加特定参数以优化性能和处理断开连接的场景,例如MySQL中的`autoReconnect=true`和`failOverReadOnly=false`。 在构建连接字符串时,应确保指定正确...

Global site tag (gtag.js) - Google Analytics