search
HomeDatabaseMysql Tutorialmysql的死锁等6个实战问题解决_MySQL

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

目录:

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

锁表后的解锁

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

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

<code class="language-sql hljs ">SELECT * FROM information_schema.INNODB_TRX;
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;</code>

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

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

mysql连接数不够

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

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

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

<code class="language-sql hljs "><code class="hljs makefile">[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</code></code>

<code class="hljs makefile">参考:http://www.cnblogs.com/S-E-P/archive/2011/04/29/2045050.html

<code class="hljs makefile">mysql的root密码修改

<code class="language-sql hljs "><code class="hljs makefile"><code class="language-sql hljs ">SELECT * FROM mysql.user WHERE USER=&#39;root&#39;;
SET PASSWORD FOR &#39;root&#39;@&#39;localhost&#39; = PASSWORD(&#39;root123&#39;);
SET PASSWORD FOR &#39;root&#39;@&#39;paas03&#39; = PASSWORD(&#39;root123&#39;);
SET PASSWORD FOR &#39;root&#39;@&#39;%&#39; = PASSWORD(&#39;root123&#39;);</code></code></code>

<code class="hljs makefile"><code class="language-sql hljs ">注:亲测OK。

<code class="hljs makefile"><code class="language-sql hljs ">密码正确却登录不进

<code class="hljs makefile"><code class="language-sql hljs ">Caused by: java.sql.SQLException: Access denied for user ‘zplat_cen1’@’aifs1’ (using password: YES)

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

<code class="hljs makefile"><code class="language-sql hljs ">datetime类型有.0问题

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

<code class="language-sql hljs "><code class="hljs makefile"><code class="language-sql hljs "><code class="language-java hljs ">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;
}</code></code></code></code>

<code class="hljs makefile"><code class="language-sql hljs "><code class="language-java hljs ">参考:http://blog.csdn.net/zhanghaotian2011/article/details/7721551

<code class="hljs makefile"><code class="language-sql hljs "><code class="language-java hljs ">同样的decimal类型也有这个问题,前台显示全部加.00

<code class="language-sql hljs "><code class="hljs makefile"><code class="language-sql hljs "><code class="language-java hljs "><code class="language-java hljs ">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;
}</code></code></code></code></code>

<code class="hljs makefile"><code class="language-sql hljs "><code class="language-java hljs "><code class="language-java hljs ">PS:学好正则表达式是多么的重要!否则去0的这个代码你怎么??

<code class="hljs makefile"><code class="language-sql hljs "><code class="language-java hljs "><code class="language-java hljs ">查看表占用空间

<code class="language-sql hljs "><code class="hljs makefile"><code class="language-sql hljs "><code class="language-java hljs "><code class="language-java hljs "><code class="language-sql hljs ">SELECT table_name,data_length/1024/1024 MB FROM  information_schema.tables 
WHERE table_schema=&#39;zplatdb&#39; ORDER BY data_length DESC;</code></code></code></code></code></code>
Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
手把手教你uniapp和小程序分包(图文)手把手教你uniapp和小程序分包(图文)Jul 22, 2022 pm 04:55 PM

本篇文章给大家带来了关于uniapp跨域的相关知识,其中介绍了uniapp和小程序分包的相关问题,每个使用分包小程序必定含有一个主包。所谓的主包,即放置默认启动页面/TabBar 页面,以及一些所有分包都需用到公共资源/JS 脚本;而分包则是根据开发者的配置进行划分,希望对大家有帮助。

MySQL表设计实战:创建一个电商订单表和商品评论表MySQL表设计实战:创建一个电商订单表和商品评论表Jul 03, 2023 am 08:07 AM

MySQL表设计实战:创建一个电商订单表和商品评论表在电商平台的数据库中,订单表和商品评论表是两个非常重要的表格。本文将介绍如何使用MySQL来设计和创建这两个表格,并给出代码示例。一、订单表的设计与创建订单表用于存储用户的购买信息,包括订单号、用户ID、商品ID、购买数量、订单状态等字段。首先,我们需要创建一个名为"order"的表格,使用CREATET

Java开发实战:集成七牛云云存储服务实现文件上传Java开发实战:集成七牛云云存储服务实现文件上传Jul 06, 2023 pm 06:22 PM

Java开发实战:集成七牛云云存储服务实现文件上传引言随着云计算和云存储的发展,越来越多的应用程序需要将文件上传至云端进行存储和管理。云存储服务的优势在于高可靠性、可扩展性和灵活性。本文将介绍如何使用Java语言开发,集成七牛云云存储服务,实现文件上传功能。七牛云简介七牛云是国内领先的云存储服务提供商,其提供了全面的云存储和内容分发服务。用户可以通过七牛云提

如何处理C++开发中的死锁问题如何处理C++开发中的死锁问题Aug 22, 2023 pm 02:24 PM

如何处理C++开发中的死锁问题死锁是多线程编程中常见的问题之一,尤其是在使用C++进行开发时更容易遇到。当多个线程互相等待对方持有的资源时,就可能发生死锁问题。如果不及时处理,死锁不仅会导致程序卡死,还会影响系统的性能和稳定性。因此,学习如何处理C++开发中的死锁问题是非常重要的。一、理解死锁的原因要解决死锁问题,首先需要了解死锁产生的原因。死锁通常发生在以

golang函数并发控制中死锁与饥饿的预防与解决golang函数并发控制中死锁与饥饿的预防与解决Apr 24, 2024 pm 01:42 PM

Go中死锁和饥饿:预防与解决死锁:协程相互等待而无法进行的操作,使用runtime.SetBlockProfileRate函数检测。预防死锁:使用细粒度加锁、超时、无锁数据结构,防止死锁。饥饿:协程持续无法获得资源,使用公平锁防止饥饿。公平锁实践:创建公平锁并等待协程尝试获取锁的时间最长的优先获取锁。

Go开发中解决死锁的方法Go开发中解决死锁的方法Jun 30, 2023 pm 04:58 PM

解决Go语言开发中的死锁问题的方法Go语言是一种开源的静态类型编译型语言,被广泛应用于并发编程。然而,由于Go语言的并发模型的特性,开发者在编写并发程序时常常会遇到死锁问题。本文将介绍一些解决Go语言开发中死锁问题的方法。首先,我们需要了解何为死锁。死锁是指多个并发任务因互相等待对方释放资源而无法继续执行的情况。在Go语言中,死锁问题通常由于对资源的竞争或者

C++ 多线程编程中死锁预防和检测机制C++ 多线程编程中死锁预防和检测机制Jun 01, 2024 pm 08:32 PM

多线程死锁预防机制包括:1.锁顺序;2.测试并设置。检测机制包括:1.超时;2.死锁检测器。文章举例共享银行账户,通过锁顺序避免死锁,为转账函数先请求转出账户再请求转入账户的锁。

MySQL表设计实战:创建一个电影信息表和演员表MySQL表设计实战:创建一个电影信息表和演员表Jul 01, 2023 pm 08:16 PM

MySQL表设计实战:创建一个电影信息表和演员表导语:在数据库设计中,表的创建是一个非常关键的环节。本文将以电影信息表和演员表为例,详细介绍如何进行MySQL表的设计和创建,并附上相应的代码示例。一、电影信息表设计和创建电影信息表是用来存储电影的相关信息,包括电影名称、导演、上映时间、电影类型等字段。下面是电影信息表的设计和创建过程,首先我们需要选择合适的字

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version