1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-07 00:04:31 +03:00
Files
mariadb/mysql-test/suite/rpl/t/rpl_foreign_key_innodb.test
Sergei Golubchik e8b9d8d38c MDEV-25530 Error 1451 on slave: Cannot delete or update a parent row: a foreign key constraint fails
after dfb41fddf6 tables that failed to drop are excluded from the
binlogged DROP TABLE statement. It means that the slave should not
expect any errors when executing DROP TABLE, and the binlog should
report that no error has happened, even if it was.

Do not write error code into the binlogged DROP TABLE,
and remove all code that was needed to compute it.
2021-04-29 13:17:31 +02:00

79 lines
2.0 KiB
Plaintext

-- source include/have_innodb.inc
# Check the replication of the FOREIGN_KEY_CHECKS variable.
-- source include/master-slave.inc
CREATE TABLE t1 (a INT AUTO_INCREMENT KEY) ENGINE=INNODB;
CREATE TABLE t2 (b INT AUTO_INCREMENT KEY, c INT, FOREIGN KEY(b) REFERENCES t1(a)) ENGINE=INNODB;
SET FOREIGN_KEY_CHECKS=0;
INSERT INTO t1 VALUES (10);
INSERT INTO t1 VALUES (NULL),(NULL),(NULL);
INSERT INTO t2 VALUES (5,0);
INSERT INTO t2 VALUES (NULL,LAST_INSERT_ID());
SET FOREIGN_KEY_CHECKS=1;
SELECT * FROM t1 ORDER BY a;
SELECT * FROM t2 ORDER BY b;
sync_slave_with_master;
SELECT * FROM t1 ORDER BY a;
SELECT * FROM t2 ORDER BY b;
connection master;
SET TIMESTAMP=1000000000;
CREATE TABLE t3 ( a INT UNIQUE );
SET FOREIGN_KEY_CHECKS=0;
--error ER_DUP_ENTRY
INSERT INTO t3 VALUES (1),(1);
sync_slave_with_master;
connection master;
SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS t1,t2,t3;
SET FOREIGN_KEY_CHECKS=1;
sync_slave_with_master;
#
# Bug #32468 delete rows event on a table with foreign key constraint fails
#
connection master;
create table t1 (b int primary key) engine = INNODB;
create table t2 (a int primary key, b int, foreign key (b) references t1(b)) engine = INNODB;
insert into t1 set b=1;
insert into t2 set a=1, b=1;
set foreign_key_checks=0;
delete from t1;
--echo must sync w/o a problem (could not with the buggy code)
sync_slave_with_master;
select count(*) from t1 /* must be zero */;
# cleanup for bug#32468
connection master;
drop table t2,t1;
set foreign_key_checks=1;
--echo #
--echo # MDEV-25530 Error 1451 on slave: Cannot delete or update a parent row: a foreign key constraint fails
--echo #
create table t1 (id int primary key)engine=innodb;
create table t2 (id int not null primary key auto_increment,
id2 int default null, key f1 (id2),
constraint f1 foreign key (id2) references t1 (id) on delete cascade) engine=innodb;
error ER_ROW_IS_REFERENCED_2;
drop table t1,t2;
sync_slave_with_master;
show tables;
connection master;
drop table t1;
sync_slave_with_master;
--source include/rpl_end.inc