(转)mysqldump: Got error: 1556: You can't use locks with log tables.

Posted liujiacai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(转)mysqldump: Got error: 1556: You can't use locks with log tables.相关的知识,希望对你有一定的参考价值。

mysqldump: Got error: 1556: You can‘t use locks with log tables.

原文:http://blog.51cto.com/oldboy/1122867

mysql主从同步出现错误解决一例:本文出自老男孩linux运维实战培训内部教案内容整理总结

FAQ:问题1mysqldump: Got error: 1556: You can‘t use locks with log tables.

    在老男孩带学生做主从同步实践时,发现学生实践操作时遇到如下问题无法解决,于是,老男孩把解决的过程总结如下:

[[email protected] ~]# 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的,只有这个学生有问题,在询问后,并查看了相关配置过程后,联系到往期也有学生发生过类似问题,于是,发现了原因。

 

[[email protected] ~]# which mysqldump

/usr/bin/mysqldump

发现原因,mysql的安装路径为/application/mysql,查看mysqldump的路径应该是/application/mysql/bin才对,但是现在的路径是rpm包安装的mysql命令路径了,至此原因找到。

[[email protected] ~]# tail -1 /etc/profile

export PATH=$PATH:/application/mysql/bin

在/etc/profile文件中,mysql的命令所在路径,该学生放到了结尾,因此,当执行mysqldump命令时,优先找到了rpm包自带的/usr/bin/mysqldump命令,从而导致了错误。

我们把把mysql的命令路径放到PATH变量的最前面:

[[email protected] ~]# tail -1 /etc/profile

export PATH=/application/mysql/bin:$PATH

[[email protected] ~]# . /etc/profile

[[email protected] ~]# 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

[[email protected] ~]# which mysqldump

/application/mysql/bin/mysqldump

此时在导出数据库:

[[email protected] ~]#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 这个参数,不锁表备份,也是可行的。










以上是关于(转)mysqldump: Got error: 1556: You can't use locks with log tables.的主要内容,如果未能解决你的问题,请参考以下文章

mysqldump: Error 2020: Got packet bigger than ‘max

mysqldump: Got error: 1102: Incorrect database nam

mysqldump Got error 1045 Access denied for user 'roor' 'l

mysqldump: Got error: 1044: Access denied for user 'backupuser'@'%' to database '

mysqldump: Got error: 1449: The user specified as a definer ('user'@'%') does not ex

mysqldump: Got error: 1556: You can't use locks with log tables. when using LOCK TABLES