MySQL参数autoReconnect=true解决8⼩时连接失效(转)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;
digger来进⾏设置,但是wait_timeout值不应该设的太⾼.
3. 较好的策略是对处于idle状态的connection定时发送⼀个sql,来刷新服务器上的时间戳.这可以使⽤c3p0r的连接池.
4. 对于tomcat的l中使⽤的连接池,knocked
4.1 设置validationQuery,这样每次borrow(默认为开启)时会通过这个sql校验连接的有效性,但是增加了时间.
4.2 设置timeBetweenEvictionRunsMillis="10000" minEvictableIdleTimeMillis="10000" 依赖evictor thread线程来把超时的连接关闭.
4.3 设置testWhileIdle="true" timeBetweenEvictionRunsMillis="10000" validationQuery="select 1" 使得定时去⽤query检测处于idle状
态的连接,也就刷新了服务器端的时间.
mysql无法连接到服务器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;这样就把选到的记录⾏锁上了,再开⼀个SQL
yog,也执⾏以上相同的操作,就会⼀直
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 u
trunc函数去掉千位是几位数pdate)报Lock wait timeout
shell判断链接是否存在exceeded ,只能通过修改my.ini⽂件innodb_lock_wait_timeout = 100;才能⽣效.
8. linux下修改⽤户密码 mysqladmin -u root password "new_pass"
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论