CREATE TABLE t1 (f1 INT NOT NULL, f2 INT NOT NULL, UNIQUE KEY uidx2(f1,f2), UNIQUE KEY uidx1(f2)) ENGINE=InnoDB; INSERT INTO t1 VALUES(1, 1); SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) NOT NULL, `f2` int(11) NOT NULL, UNIQUE KEY `uidx2` (`f1`,`f2`), UNIQUE KEY `uidx1` (`f2`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci SET DEBUG_SYNC = 'innodb_inplace_alter_table_enter SIGNAL conc_dml WAIT_FOR go_ahead'; ALTER TABLE t1 CHANGE COLUMN f1 f11 INT, ALGORITHM=INPLACE; connect con1,localhost,root,,; SET DEBUG_SYNC = 'now WAIT_FOR conc_dml'; DELETE FROM t1; SET DEBUG_SYNC = 'now SIGNAL go_ahead'; connection default; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `f11` int(11) DEFAULT NULL, `f2` int(11) NOT NULL, UNIQUE KEY `uidx1` (`f2`), UNIQUE KEY `uidx2` (`f11`,`f2`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci CHECK TABLE t1; Table Op Msg_type Msg_text test.t1 check status OK DROP TABLE t1; CREATE TABLE t1(f1 INT, f2 INT, PRIMARY KEY(f1, f2), UNIQUE INDEX uidx2 (f1, f2), UNIQUE INDEX uidx1 (f2))ENGINE=InnoDB; INSERT INTO t1 VALUES(2, 2); ALTER TABLE t1 DROP PRIMARY KEY; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) NOT NULL, `f2` int(11) NOT NULL, UNIQUE KEY `uidx2` (`f1`,`f2`), UNIQUE KEY `uidx1` (`f2`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci SET DEBUG_SYNC = 'innodb_inplace_alter_table_enter SIGNAL conc_dml WAIT_FOR go_ahead'; ALTER TABLE t1 CHANGE COLUMN f1 f11 INT, ALGORITHM=INPLACE; connection con1; SET DEBUG_SYNC = 'now WAIT_FOR conc_dml'; INSERT INTO t1 VALUES(1, 1), (1, 1); ERROR 23000: Duplicate entry '1-1' for key 'uidx2' SET DEBUG_SYNC = 'now SIGNAL go_ahead'; connection default; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `f11` int(11) DEFAULT NULL, `f2` int(11) NOT NULL, UNIQUE KEY `uidx1` (`f2`), UNIQUE KEY `uidx2` (`f11`,`f2`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci CHECK TABLE t1; Table Op Msg_type Msg_text test.t1 check status OK DROP TABLE t1; SET SQL_MODE= strict_trans_tables; CREATE TABLE t1(a INT UNIQUE) ENGINE=InnoDB; INSERT INTO t1 VALUES(1); SET DEBUG_SYNC='row_log_table_apply1_before SIGNAL dml WAIT_FOR dml_done'; ALTER TABLE t1 MODIFY COLUMN a INT NOT NULL; connection con1; SET DEBUG_SYNC='now WAIT_FOR dml'; BEGIN; INSERT INTO t1 SET a=NULL; COMMIT; set DEBUG_SYNC='now SIGNAL dml_done'; connection default; ERROR 22004: Invalid use of NULL value DROP TABLE t1; disconnect con1; SET DEBUG_SYNC="RESET"; SET SQL_MODE=DEFAULT; CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL, PRIMARY KEY(f1, f2), UNIQUE KEY(f2))ENGINE=InnoDB; ALTER TABLE t1 DROP PRIMARY KEY; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) NOT NULL, `f2` int(11) NOT NULL, UNIQUE KEY `f2` (`f2`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci DROP TABLE t1; CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL, UNIQUE KEY(f2), UNIQUE KEY(f2))ENGINE=InnoDB; Warnings: Note 1831 Duplicate index `f2_2`. This is deprecated and will be disallowed in a future release SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) NOT NULL, `f2` int(11) NOT NULL, UNIQUE KEY `f2` (`f2`), UNIQUE KEY `f2_2` (`f2`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci ALTER TABLE t1 DROP INDEX f2, ALGORITHM=INPLACE; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) NOT NULL, `f2` int(11) NOT NULL, UNIQUE KEY `f2_2` (`f2`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci DROP TABLE t1;