diff --git a/mysql-test/r/partition_innodb.result b/mysql-test/r/partition_innodb.result
index f80e0001ea87025bb897332fd5c09e7bf4249206..5cbe34c94ca012e9a6c6bf37085fc810ef61518d 100644
--- a/mysql-test/r/partition_innodb.result
+++ b/mysql-test/r/partition_innodb.result
@@ -1,3 +1,15 @@
+# Bug#32948
+CREATE TABLE t1 (c1 INT, PRIMARY KEY (c1)) ENGINE=INNODB;
+CREATE TABLE t2 (c1 INT, PRIMARY KEY (c1),
+FOREIGN KEY (c1) REFERENCES t1 (c1)
+ON DELETE CASCADE)
+ENGINE=INNODB;
+ALTER TABLE t1 PARTITION BY HASH(c1) PARTITIONS 5;
+ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails
+ALTER TABLE t1 ENGINE=MyISAM;
+ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails
+DROP TABLE t2;
+DROP TABLE t1;
 create table t1 (a int) engine=innodb partition by hash(a) ;
 show table status like 't1';
 Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
diff --git a/mysql-test/t/partition_innodb.test b/mysql-test/t/partition_innodb.test
index 6b73d0b2c5ec58c481c98c05d7e2f6ab4dc0f621..58010f85ecf7f20bc1b1f63adbfa7ecb1657e4a5 100644
--- a/mysql-test/t/partition_innodb.test
+++ b/mysql-test/t/partition_innodb.test
@@ -1,6 +1,21 @@
 --source include/have_partition.inc
 --source include/have_innodb.inc
 
+# Bug#32948 - FKs allowed to reference partitioned table
+#
+-- echo # Bug#32948
+CREATE TABLE t1 (c1 INT, PRIMARY KEY (c1)) ENGINE=INNODB;
+CREATE TABLE t2 (c1 INT, PRIMARY KEY (c1),
+                 FOREIGN KEY (c1) REFERENCES t1 (c1)
+                 ON DELETE CASCADE)
+ENGINE=INNODB;
+--error ER_ROW_IS_REFERENCED
+ALTER TABLE t1 PARTITION BY HASH(c1) PARTITIONS 5;
+--error ER_ROW_IS_REFERENCED
+ALTER TABLE t1 ENGINE=MyISAM;
+DROP TABLE t2;
+DROP TABLE t1;
+
 #
 # Bug #14673: Wrong InnoDB default row format
 #
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index 91acd8d20a3ad91336f4de39883a9a9daa3c19de..896b681fc08edaf61b41536b6c17ab2b40467876 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -5974,7 +5974,8 @@ view_err:
     goto err;
   new_db_type= create_info->db_type;
 
-  if (new_db_type != old_db_type &&
+  if ((new_db_type != old_db_type ||
+       alter_info->flags & ALTER_PARTITION) &&
       !table->file->can_switch_engines())
   {
     my_error(ER_ROW_IS_REFERENCED, MYF(0));