分享mysql数据库同步遇到的问题–锁表
一.问题描述
如标题,想要同步一下sit的数据库。通过navicat将原转存为.sql文件(小补充:压缩可大大减小文件大小),然后拿过来右击数据库选择“运行sql文件”。但是,由于中途导入卡顿(也有卡死的情况),强制终端了sql的运行,出现了两个问题:
-
1.运行完sql文件发现有较多的表没有创建
-
2.数据库无法登录,或者登录后无法查询表的数据,一直转圈圈
二.分析与解决问题
- 1.表没有创建的原因:导入时没有选择“遇到错误中断”,导致只运行了成功的。我的数据库错误时–mysql版本的问题,导致插入时,timestamp格式的字段值为空还是空字符串时,导入错误。然后有没有设置中断。最后缺失大量数据。当然,由于一些外键,或者先有数据之后加入的约束可能也会导致错误。
- 2.表和库都无法操作的原因:锁表。具体锁表原因,没有细致分析,借鉴同事的帮助解决了改锁表问题。接下来将操作予以记录。
三.锁表的解决办法(navicat,当然mysql窗口也是一样的)
-
1.打开数据库连接,然后点击“工具”–>“命令列界面”。没错就是进入到了mysql命令窗口了。
-
2.use对应的数据库(mysql命令)。
-
3.执行命令:
show processlist;
结果如下:
-
4.现在问题就很明朗了,看“State”一栏,有两个地方被lock了。
-
5.我的处理办法时:直接执行对应进程id的kill命令
kill 13779;kill 13800;
-
再次执行show processlist;,发现没有lock了,然后回到数据库发现一切正常,问题解决