现有2个数据库表(表结构完全一样) 都是innodb类型。 一个trigger用于业务处理,trigger如下IF _workorder_type = 2 && _channel_id = 1 THEN
SELECT id INTO _workorder_id
FROM  d1
WHERE businessid = _business_id
AND   workorder_type = 2 
AND   channel = 1
AND   id <> NEW.workorder_id
LIMIT 1;
END IF;
END IF;因业务的需要,将d1表还成d2表IF _workorder_type = 2 && _channel_id = 1 THEN
SELECT id INTO _workorder_id
FROM  d2
WHERE businessid = _business_id
AND   workorder_type = 2 
AND   channel = 1
AND   id <> NEW.workorder_id
LIMIT 1;
END IF;
END IF;当执行trigger后,数据库发生异常Query caused different errors on master and slave.Error on master: 'Table '%-.64s.%-.64s' doesn't exist' (1146), Error on slave: 'no error'原因是主库没有找到d2这个表,但是主库中是有这样的表。 有遇到这样问题的朋友吗,求助

解决方案 »

  1.   

    select * from information.tables where table_name='d2';master上看看
      

  2.   


      TABLE_CATALOG: NULL
       TABLE_SCHEMA: test
         TABLE_NAME: d2
         TABLE_TYPE: BASE TABLE
             ENGINE: InnoDB
            VERSION: 10
         ROW_FORMAT: Compact
         TABLE_ROWS: 48710
     AVG_ROW_LENGTH: 312
        DATA_LENGTH: 15220736
    MAX_DATA_LENGTH: 0
       INDEX_LENGTH: 9945088
          DATA_FREE: 0
     AUTO_INCREMENT: 2232911
        CREATE_TIME: 2011-06-22 04:14:46
        UPDATE_TIME: NULL
         CHECK_TIME: NULL
    TABLE_COLLATION: utf8_general_ci
           CHECKSUM: NULL
     CREATE_OPTIONS: checksum=1 delay_key_write=1 row_format=DYNAMIC
      TABLE_COMMENT: InnoDB free: 4096 kB
    谢谢
      

  3.   


      TABLE_CATALOG: NULL
       TABLE_SCHEMA: test
         TABLE_NAME: d1
         TABLE_TYPE: BASE TABLE
             ENGINE: InnoDB
            VERSION: 10
         ROW_FORMAT: Compact
         TABLE_ROWS: 1249058
     AVG_ROW_LENGTH: 186
        DATA_LENGTH: 232521728
    MAX_DATA_LENGTH: 0
       INDEX_LENGTH: 214204416
          DATA_FREE: 0
     AUTO_INCREMENT: NULL
        CREATE_TIME: 2011-06-22 17:39:24
        UPDATE_TIME: NULL
         CHECK_TIME: NULL
    TABLE_COLLATION: utf8_general_ci
           CHECKSUM: NULL
     CREATE_OPTIONS: 
      TABLE_COMMENT: InnoDB free: 6144 kB
    d1表的结构
      

  4.   

    slave上得trigger没有更改吗看下master和slave上show create trigger xxx是否一致
      

  5.   


    谢谢rucypli, 主从2台服务器上的数据库trigger是一致的。
      

  6.   

    没有其他的错误,是主库这面包的表没找到,报Query caused different errors on master and slave, 而且主库没有损坏,主库只要更新trigger,就会导致主从不一致(报错提示:表不存在)