include/master-slave.inc [connection master] ==== Test Without sql_mode=strict_trans_tables ==== create table t1 (n int not null primary key); connection slave; insert into t1 values (1); connection master; insert into t1 values (1); insert into t1 values (2),(3); connection slave; select * from t1 order by n; n 1 2 3 ==== Test With sql_mode=strict_trans_tables ==== insert into t1 values (7),(8); connection master; set sql_mode=strict_trans_tables; insert into t1 values (7), (8), (9); connection slave; select * from t1 order by n; n 1 2 3 7 8 include/check_slave_is_running.inc ==== Clean Up ==== connection master; drop table t1; connection slave; connection master; create table t1(a int primary key); insert into t1 values (1),(2); SET SQL_LOG_BIN=0; delete from t1; SET SQL_LOG_BIN=1; set sql_mode=strict_trans_tables; insert into t1 values (1), (2), (3); connection slave; select * from t1; a 1 2 include/check_slave_is_running.inc ==== Clean Up ==== connection master; drop table t1; connection slave; ==== Using Innodb ==== connection master; SET SQL_LOG_BIN=0; CREATE TABLE t1(id INT NOT NULL PRIMARY KEY, data INT) Engine=InnoDB; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `id` int(11) NOT NULL, `data` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 SET SQL_LOG_BIN=1; connection slave; call mtr.add_suppression("Slave SQL.*Could not execute .*te_rows event on table test.t.; Duplicate entry.* error.* 1062"); CREATE TABLE t1(id INT NOT NULL PRIMARY KEY, data INT) Engine=InnoDB; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `id` int(11) NOT NULL, `data` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 connection master; INSERT INTO t1 VALUES(1, 1); INSERT INTO t1 VALUES(2, 1); INSERT INTO t1 VALUES(3, 1); INSERT INTO t1 VALUES(4, 1); SET SQL_LOG_BIN=0; DELETE FROM t1 WHERE id = 4; SET SQL_LOG_BIN=1; UPDATE t1 SET id= id + 3, data = 2; connection slave; **** We cannot execute a select as there are differences in the **** behavior between STMT and RBR. ==== Using MyIsam ==== connection master; SET SQL_LOG_BIN=0; CREATE TABLE t2(id INT NOT NULL PRIMARY KEY, data INT) Engine=MyIsam; SHOW CREATE TABLE t2; Table Create Table t2 CREATE TABLE `t2` ( `id` int(11) NOT NULL, `data` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 SET SQL_LOG_BIN=1; connection slave; CREATE TABLE t2(id INT NOT NULL PRIMARY KEY, data INT) Engine=MyIsam; SHOW CREATE TABLE t2; Table Create Table t2 CREATE TABLE `t2` ( `id` int(11) NOT NULL, `data` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 show global status like 'slave_skipped_errors'; Variable_name Value Slave_skipped_errors 4 connection master; INSERT INTO t2 VALUES(1, 1); INSERT INTO t2 VALUES(2, 1); INSERT INTO t2 VALUES(3, 1); INSERT INTO t2 VALUES(5, 1); SET SQL_LOG_BIN=0; DELETE FROM t2 WHERE id = 5; SET SQL_LOG_BIN=1; UPDATE t2 SET id= id + 3, data = 2; connection slave; show global status like 'slave_skipped_errors'; Variable_name Value Slave_skipped_errors 5 **** We cannot execute a select as there are differences in the **** behavior between STMT and RBR. ==== Clean Up ==== connection master; DROP TABLE t1; DROP TABLE t2; connection slave; include/rpl_end.inc