ERROR 1025 (HY000): Error on rename of to

        刚才又一个一不小心,在Slave上执行了更改数据库schema的操作,结果是这台服务器在mmm_control中的状态就变成了:REPLICATION_FAIL。先通过writer执行了同样的操作,保证服务器正常运行,然后就考虑把这台slave重新拉回到mysql-mmm阵营。

        看了一下执行的增量SQL文件,它进行的主要操作有:为一个表A添加三个字段A1、A2、A3,增加一个新表B,为表C增加一个字段C1,其中C1为外键CF1(关键点是:外键的名字和字段的名字相同,假设都为C1),关联B的主键B1。所以接下来要进行的就是回滚这些操作:

         1、删除A表中的新增的三个字段:         

ALTER TABLE A DROP COLUMN A1;
ALTER TABLE A DROP COLUMN A2;
ALTER TABLE A DROP COLUMN A3;

         2、删除C表中的外键CF1,然后删除C1:


ALTER TABLE C DROP FOREIGN C1;

执行这条语句得到了下面的错误信息:

ERROR 1025 (HY000): Error on rename of './db1/C' to './db1/#sql2-31ef-2c2d4e' (errno: 152)

那么直接删除字段C1呢:

ALTER TABLE C DROP COLUMN C1;

得到的错误信息是:
ERROR 1025 (HY000): Error on rename of './db1/#sql-31ef_2c2d4e' to './db1/C' (errno: 150)

        问题的原因在上面已经提示到了:外键和字段使用了同样的名字。

        解决方法:

        1、先通过

SHOW CREATE TABLE C;

找到创建外键的语句:

CONSTRAINT `C_ibfk_2` FOREIGN KEY (`C1`) REFERENCES `B` (`B1`) ON DELETE SET NULL ON UPDATE CASCADE

        2、 通过CONSTRAINT的名字删除外键:

ALTER TABLE C DROP FOREIGN KEY C_ibfk_2;

然后再执行其他后续操作就可以了。

      解决上面的问题后,通过“START SLAVE”重新启动slave线程,过一会儿再去查看mmm_control的状态,发现该slave已经回来了。

参考资料:

http://dev.mysql.com/doc/refman/5.0/en/innodb-error-codes.html

时间: 2024-09-10 20:56:34

ERROR 1025 (HY000): Error on rename of to的相关文章

ERROR 1010 (HY000): Error dropping database (can't rmdir '.\qpweb', errno: 41) 删库失败问题的解决

今天用mysql的图形化工具删除表和数据库失败,最终参考以下文档成功: 稍有不同的是,mysql的安装,一个是在linux系统,一个是在windows. 以下文档地址:http://blog.csdn.net/defonds/article/details/45113783 Win8 下,MySQL5.5,root 用户登录 MySQL 5.5 Command Line Client,删除 qpweb 数据,执行命令 drop database qpweb;报错信息:ERROR 1010 (HY

mysql中导入报错-ERROR 2013 (HY000)的案例

[现象] 导入MySQL的mysqldump文件时报错,提示ERROR 2013 (HY000) at line xxoo: Lost connection to MySQL serverduring query,导入操作中断退出. [原因] 要导入的mysqldump文件中insert的values值太多,超过了MySQL参数max_allowed_packet的值,进而导致导入操作中断退出. [解决方法] 调高max_allowed_packet的值: SQL> set global max

MySQL中ERROR 1665 (HY000)案例

1.1.1. ERROR 1665 (HY000) [环境描述] msyql5.6.14 [报错信息] 执行SQL语句的时候报错: ERROR 1665 (HY000): Cannot executestatement: impossible to write to binary log since BINLOG_FORMAT = STATEMENTand at least one table uses a storage engine limited to row-based logging.

MySQL中ERROR 1786 (HY000)案例

1.1.1. ERROR 1786 (HY000) [环境描述] msyql5.6.14 [报错信息] 执行create table ... select的时候遇到报错: db1 [test] [23:01:58]> create tablelgmnr_bak select * from lgmnr; ERROR 1786 (HY000): CREATE TABLE ... SELECTis forbidden when @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1

ERROR 1366 (HY000): Incorrect string value:’XXX’ for column 'XXX at ro

ERROR 1366 (HY000): Incorrect string value:'XXX' for column 'XXX at row 1解决 环境 MySQL Server 5.5.27 + 命令行工具 问题 插入中文字符数据出现如下错误: ERROR 1366 (HY000): Incorrect stringvalue: '\xBD\xF1\xCC\xEC\xCC\xEC...' for co lumn 'MESSAGECONTENT' at row 1 环境再现 --以下是插入语

ERROR 1005 (HY000): Can't create table 'zcxt.tb_asset' (errno: 150)解决

环境 MySQL 5.1 + 命令行工具 问题 建表出现如下错误: ERROR 1005 (HY000): Can't create table 'zcxt.tb_asset' (errno: 150) 解决 1. 是否存 在SQL语法错误: 2. 外键引用的字段是否存在.

ERROR 1005 (HY000): Can't create table错误的解决

在使用MySQL的时候,在操作不当时,很容易出现 ERROR 1005 (HY000): Can't create table 这类错误.很多站长朋友可能需要排查很久才会找到问题的原因其实很简单,希望这篇文章可以对站长朋友以及Mysql初学者一点帮助. MYSQL官方提供的问题原因: 在信息中有一组[LATEST FOREIGN KEY ERROR]会有最近错误的详细描述和解决办法. Cannot find an index in the referenced table where the r

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

从供应商手中接手一个云平台(Windwos Azure)上的MySQL数据库,登录数据库时遇到错误: $mysql -uroot -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 检查配置文件/etc/my.cnf发现供应商修改了mysql数据库的数据存储目录,另外mysql.sock文件位置也变更为了/

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (

mysql启动成功 service mysqld start  mysql is OK mysql登录错误 : [root@localhost ~]# mysql -uroot -p123456ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 解决: vim /etc/my.cnf 找到 socket路径 scoket=/tmp/mysql.