mysqldump: Got error: 1556: You can't use locks with log tables.
原文:http://blog.51cto.com/oldboy/1122867
mysql主从同步出现错误解决一例:本文出自老男孩linux运维实战培训内部教案内容整理总结
FAQ:问题1:mysqldump: Got error: 1556: You can't use locks with log tables.
在老男孩带学生做主从同步实践时,发现学生实践操作时遇到如下问题无法解决,于是,老男孩把解决的过程总结如下:
[root@Oldboy ~]# mysqldump -uroot -p'oldboy' -S /data/3306/mysql.sock -A -B >a.sql
mysqldump: Got error: 1556: You can't use locks with log tables. when using LOCK TABLES
解决过程:
同样的操作,其他10几个学生都是OK的,只有这个学生有问题,在询问后,并查看了相关配置过程后,联系到往期也有学生发生过类似问题,于是,发现了原因。
[root@Oldboy ~]# which mysqldump
/usr/bin/mysqldump
发现原因,mysql的安装路径为/application/mysql,查看mysqldump的路径应该是/application/mysql/bin才对,但是现在的路径是rpm包安装的mysql命令路径了,至此原因找到。
[root@oldboy ~]# tail -1 /etc/profile
export PATH=$PATH:/application/mysql/bin
在/etc/profile文件中,mysql的命令所在路径,该学生放到了结尾,因此,当执行mysqldump命令时,优先找到了rpm包自带的/usr/bin/mysqldump命令,从而导致了错误。
我们把把mysql的命令路径放到PATH变量的最前面:
[root@oldboy ~]# tail -1 /etc/profile
export PATH=/application/mysql/bin:$PATH
[root@Oldboy ~]# . /etc/profile
[root@Oldboy ~]# echo $PATH
/application/mysql/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin:/root/bin:/usr/local/mysql/bin:/application/mysql5.1.65/bin:/application/apache/bin
[root@Oldboy ~]# which mysqldump
/application/mysql/bin/mysqldump
此时在导出数据库:
[root@Oldboy ~]#mysqldump -uroot -p'oldboy' -S /data/3306/mysql.sock -A -B >a.sql
可以正常导出了。
下面该同学搜索的,其他网友的同样报错的另外一个问题的文章:
mysqldump You can’t use locks with log tables 11-01-13 11:05:02
http://blog.chinaunix.net/uid-21757535-id-86425.html
分类: Mysql/postgreSQL
最近在做数据库备份的时候,遇到这样的一个错误:
mysqldump: Got error: 1556: You can't use locks with log tables. when using LOCK TABLES
我是把一些mysqldump语句放在一个批量命令文件(传说中的.sh文件)中执行的,而当我把这些
mysqldump语句分离开来一个一个执行的时候,我发现是没有任何错误的,于是在网络上找了一些资料:
发现是mysql默认数据库里的logs表,不能被加锁(lock tables)引起的。
于是我测试了一下,把关于mysql这个默认数据库相关的语句清空后,整个文件即可正常运行。
还有一个解决方法:
便是在mysql这个数据库相关的那句mysqldump加上 --lock-tables=0 这个参数,不锁表备份,也是可行的。