数据库表被锁的缘由分析和数据库乱码解决

1、记录一次准备给客户预演示出现的问题java

事故的背景:

当因此功能开发完成后,开发人员在本地进行了测视已经没问题了。就把全部开发的功能模块合并到 dev 分支,进行打包,发布到预演示的线上环境。当在给相关人员进行演示的时候,出现了问题。mysql

咱们使用 https 调用对方的接口发送 Json 数据,对方进行校验立刻返回校验的响应结果。问题出如今咱们每次发送数据都是成功的,可是对方发送回来的数据,一直不能正常插入 DB(使用的是 Oracle)web

事故的真正缘由:sql

由于有个同事在进行了 delete 后没有进行 commit 提交。致使表一直被锁住,不能被其余人使用。数据库

可是杀死进程和本地 commit 几回后,依旧没法插入数据,提示仍是 DB 被这个同事锁住。网络

最后查出的真正缘由是,这个同事首先使用了 无线网络 进行了 DB 的操做,当时并无 commit 提交操做。然后又插上网线继续工做,问题就出如今这里。session

首先,当咱们使用无线网络操做 DB 时,Oracle 会默认这是一次会话(session),当开发人员对 DB 进行操做后(没有 commit ),又切换到了有线网络状态下,而这 2 种状态下的本机 IP 是不同的(有兴趣的朋友能够试试使用无线和有线链接状态下,同一台电脑的 IP 地址是否同样)。eclipse

Oracle 会认为第一次 session 没有关闭,会将表锁住,等待此次 session 会话的提交直到结束。google

因此当同事再链接上网线,使用有线网络进行 commit 时候会提示操做失败。由于 Oracle 数据库认为这又是一次新的 session 会话。而第一次的 session 会话并无结束,就会致使出现了 DB 一直被锁的状况。编码

事故的解决办法:

首先使用语句查询(只有 Admin 用户才能够)出被锁住的表和锁表的开发人员的工号。

而后杀死这个进程或者进行 DB 重启便可。

2、在作 javaweb 项目的时,前台传递的中文最后插入数据库的时候老是出现乱码现象。

解决方案

A、不论是使用 Idea、eclipse,肯定本身的项目所使用的字符集是 UTF-8

B、查看 MySQL的字符集是不是 UTF-8。打开 Dos 窗口,输入:mysql -u root -p, 在输入密码便可进入 数据库。进入数据库输入命令 :show variables like 'character%';查看数据库的字符集,以下图:

1.png

MySQL 的默认编码是 Latin1,不支持中文,要支持中文须要把数据库的默认编码修改成 UTF-8

C、修改 MySQL 的字符集。

① 使用命令修改数据库的字符集为 UTF-8。(因为小编使用命令设置后依旧不能插入,不在此赘述)

② 修改 MySQL 的配置文件。(修改后,成功插入中文,在此介绍这种方法)

D、本人安装的 MySQL 版本是 5.7.25,安装好 MySQL 后就要对字符集进行修改了,网上的大部分说法是去 安装目录找一个 my-default.ini 文件,而后重命名为 my.ini,再对其进修改字符集便可,可是 在 MySQL 的安装目录下竟然没有这个文件。

其实 MySQL 的 5.7.25 的 my.ini文件不在安装目录下,若是是默认安装 MySQL 的,那么它的 my.ini 文 件在隐藏文件夹 C:\ProgramData\MySQL\MySQL Server 5.7 下。

你须要作的就是显示隐藏的的项目,找到这个文件修改便可(修改前,请先作备份)。

对该 my.ini 文件下进行配置修改 :

[client]

default-character-set = utf8

[mysql]

default-character-set = utf8

[mysqld]

character-set-client-handshake = FALSE

character-set-server = utf8

collation-server = utf8_unicode_ci

init_connect=’SET NAMES utf8’

E、修改 my.ini 文件后,保存,再重启 MySQL 服务。

计算机——右键——管理——服务,找到 MySQL57,对其右键中止,再启动便可

F、重启成功后,进入 MySQL 数据库,输入show variables like 'character%'; 显示数据库字符集已修改 成功。

2.png

重要提示:

对于中文乱码问题,小编只是列举了一种可能性,以及解决方案。固然最重要的是确定还有不少缘由致使中文乱码,都会有相应的解决方案。做为程序猿,应当懂得 google,正所谓本身动手,丰衣足食。

相关文章
相关标签/搜索