rt
比如Error 'Duplicate entry这样的错误!

解决方案 »

  1.   

    那也就是说,从服务器遇上了Error 'Duplicate entry这个错误,一定是从服务器数据库本身就有这么一条记录,从而导致的?
      

  2.   

    是的,当然也有可能是mysql本身的bug造成的。
      

  3.   


    这个比较可怕,我用的是  5.1.37-log
      

  4.   

    Transaction 
    Maybe you not excute failed really.
    Check the table's data,if there have been the data.
      

  5.   

    看看错误日志,有必要的话用mysqlbinlog 看看slave下的中继日志,看看是什么数据出错了
    然后对照表数据,找出数据出错的来源从根本上解决问题才是关键的,否则,这次出错了,下次又出现怎么办
      

  6.   

    不会,只能提交成功的语句才会写入binlog
      

  7.   

    我用 mysqlbinlog查看master大概出现问题的日志:mysqlbinlog --no-defaults --start-datetime='2009-08-18 15:00:00' --stop-datetime='2009-08-18 18:00:00' /edata/database2/mysql-bin.000019   
    出现以下错误:/*!40019 SET @@session.max_insert_delayed_threads=0*/;
    /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
    DELIMITER /*!*/;
    # at 4
    #090817 21:17:55 server id 1  end_log_pos 106   Start: binlog v 4, server v 5.1.37-log created 090817 21:17:55
    # Warning: this binlog was not closed properly. Most probably mysqld crashed writing it.会不会跟这个有关?
      

  8.   

    # Warning: this binlog was not closed properly. Most probably mysqld crashed writing it. 
    嗯,很可能就是这个问题引起的
      

  9.   

    对了,发生Duplicate entry 的表的主键是auto increment! 出现这样的问题会不会跟自增字段有关呢?
      

  10.   

    问题大概锁定范围了,我回忆起来昨天在网页上由一个操作,在 '从服务器' 上的这个自增表中插入了一条记录,而其后 '主服务器' 的insert into后,'从服务器' 上也会执行这条语句!
    但,让我奇怪的是,即便如此 '从服务器'从bin-log里获得并执行insert into后,无非是自增一个数字,为什么会出现Duplicate entry的错误呢?而且还导致同步的停滞!也就是这样一个过程:
    从:  insert into tbl(id) values(null); #id为自增
    主: insert into tbl(id) values(null); #记录与bin-log中 
    从: 从主服务器上获得log-bin,执行刚才主服务器上的insert into tbl(id) values(null); 发生了 Duplicate entry的错误,并停止了同步!不知说清楚没有!
      

  11.   

    不是这样的,为了保持主从的ID一致,不会在从库上使用自增,mysql会在binlog里会明确指定id的,从库上使用显示指定ID的方式insert,你看一下binlog的内容就知道了。
      

  12.   


    哦,太谢谢了!不过主的binlog我查了,就是这样啊,insert into tbl(id) values(null); 
    是让我看从服务器的binlog吗?
      

  13.   

    在你的insert语句前面会有一个SET INSERT_ID=,这就是设置将要插入的id