0

0

mysql的死锁等6个实战问题解决_MySQL

php中文网

php中文网

发布时间:2016-06-01 12:58:49

|

1338人浏览过

|

来源于php中文网

原创

mysql的死锁等6个实战问题解决

目录:

锁表后的解锁 mysql连接数不够 mysql的root密码修改 密码正确却登录不进 datetime类型有0问题 查看表占用空间

锁表后的解锁

当对表做dml操作时卡住,很可能是表被锁。
到数据库主机,查看进程命令:
show processlist;
找到有锁的进程id,杀掉:
kill id;

processlist是全部的进程,比较多,有时候,从processlist里能看到哪个锁住,但有时候它和其他进程看上去一样。
这时需要查看数据表:

SELECT * FROM information_schema.INNODB_TRX;
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;

看trx_mysql_thread_id字段,这个是死锁的进程id,然后到主机那里kill掉即可。

经验提示:最好不要用客户端界面修改表结构,有可能会锁住。最好使用语句。(不过,其实我也经常贪图方便,直接用SQLyog直接修改表结构,方便嘛。偶尔锁住了kill掉即可,毕竟只是开发环境,生产环境必须不能如此) 增加字段:ALTER TABLE tf_b_depart ADD (PARENT_MAJOR VARCHAR(6)); 修改字段:alter table tf_f_task_target modify VALUE decimal(16,2); 建表:CREATE TABLE td_s_salary_index (index_id VARCHAR(8));

mysql连接数不够

陆续开发人员的eclipse里突然报错信息:

MySQLNonTransientConnectionException
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: “Too many connections”
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

原因:max_connections mysql 默认值为100,超过了就会报错。重启mysql即可。为了防止后面再出现,需要把max_connections改为1000或更多。

[mysql@paas03 ~]$more my.cnf
[mysqld_multi]
mysqld = /app/mysql/bin/mysqld_safe
mysqladmin = /app/mysql/bin/mysqladmin
user = mysql
password = a@Aug22
log=/app/log/mysqld_multi.log

[mysqld01]
port = 3010
socket = /tmp/mysql.sock01
pid-file = /app/data_paas/db-app.pid
basedir = /app/mysql
datadir = /app/data_paas
user = mysql
symbolic-links=0
character-set-server=utf8
lower_case_table_names=1
innodb_log_file_size=128M
innodb_log_buffer_size=4M
innodb_buffer_pool_size=1G
event_scheduler=1
explicit_defaults_for_timestamp
max_connections=1500
join_buffer_size = 128M
sort_buffer_size = 10M
read_rnd_buffer_size = 2M

参考:http://www.cnblogs.com/S-E-P/archive/2011/04/29/2045050.html

沁言学术
沁言学术

你的论文写作AI助理,永久免费文献管理工具,认准沁言学术

下载

mysql的root密码修改

SELECT * FROM mysql.user WHERE USER='root';
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root123');
SET PASSWORD FOR 'root'@'paas03' = PASSWORD('root123');
SET PASSWORD FOR 'root'@'%' = PASSWORD('root123');

注:亲测OK。

密码正确却登录不进

Caused by: java.sql.SQLException: Access denied for user ‘zplat_cen1’@’aifs1’ (using password: YES)

其他机器可以登录,就是安装了这个数据库的本机不能登录。然后发现不需要密码就可以登录了(去掉-p),但是只有test库。
http://www.bitsCN.com/article/19326.htm这里里面说的delete from user where user is NULL;是扯淡的。
真正的原因是dba没创建本主机的用户,mysql和oracle不太一样,同一个用户,需要在三台机器分别创建,包括localhost、本主机名、%(表示通配符)。应该CREATE USER 'zplat_cen1'@'aifs1' IDENTIFIED BY 'XXX';就可以了。

datetime类型有.0问题

mysql datetime类型,后面会有.0
2015-07-21 16:37:47.0
有两种解决方法:
1. 写sql时增加DATE_FORMAT(RECEIVE_TIME, '%Y-%m-%d %H:%i:%s'),这个非常麻烦,每个sql都得加
2. 修改你公司的框架代码,统一处理一下

if (type == Types.TIMESTAMP) { // 增加对时间类型的支持,修复mysql显示.0问题 2015.7.21
    Timestamp t = rs.getTimestamp(name);
    if (t == null)
        return null;
    SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String date = sDateFormat.format(t);
    return date;
}

参考:http://blog.csdn.net/zhanghaotian2011/article/details/7721551

同样的decimal类型也有这个问题,前台显示全部加.00

if (type == Types.DECIMAL) { // 增加对decimal类型的支持,修复mysql显示.00问题 2015.7.22
    String decimal = rs.getString(name);
    if (decimal == null)
        return null;
    if(decimal.indexOf(".") > 0){  
        decimal = decimal.replaceAll("0+?$", "");//去掉多余的0
        decimal = decimal.replaceAll("[.]$", "");//如最后一位是.则去掉
    }
    return decimal;
}

PS:学好正则表达式是多么的重要!否则去0的这个代码你怎么??

查看表占用空间

SELECT table_name,data_length/1024/1024 MB FROM  information_schema.tables 
WHERE table_schema='zplatdb' ORDER BY data_length DESC;

相关专题

更多
微信聊天记录删除恢复导出教程汇总
微信聊天记录删除恢复导出教程汇总

本专题整合了微信聊天记录相关教程大全,阅读专题下面的文章了解更多详细内容。

2

2026.01.18

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

74

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

133

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

54

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

39

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

19

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

106

2026.01.15

浏览器缓存清理方法汇总
浏览器缓存清理方法汇总

本专题整合了浏览器缓存清理教程汇总,阅读专题下面的文章了解更多详细内容。

44

2026.01.15

ps图片相关教程汇总
ps图片相关教程汇总

本专题整合了ps图片设置相关教程合集,阅读专题下面的文章了解更多详细内容。

11

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP入门到实战消息队列RabbitMQ
PHP入门到实战消息队列RabbitMQ

共22课时 | 1.3万人学习

成为PHP架构师-自制PHP框架
成为PHP架构师-自制PHP框架

共28课时 | 2.4万人学习

SQL优化与排查(MySQL版)
SQL优化与排查(MySQL版)

共26课时 | 2.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号