diff --git a/sqlx-mysql/src/connection/executor.rs b/sqlx-mysql/src/connection/executor.rs index 4f5af4bf6d..d08d78147c 100644 --- a/sqlx-mysql/src/connection/executor.rs +++ b/sqlx-mysql/src/connection/executor.rs @@ -123,6 +123,14 @@ impl MySqlConnection { .get_or_prepare_statement(sql) .await?; + if arguments.types.len() != metadata.parameters { + return Err(Error::Protocol(format!( + "Prepared statement expected {} parameters but {} parameters were provided", + metadata.parameters, + arguments.types.len() + ))); + } + // https://dev.mysql.com/doc/internals/en/com-stmt-execute.html self.inner.stream .send_packet(StatementExecute { @@ -137,6 +145,14 @@ impl MySqlConnection { .prepare_statement(sql) .await?; + if arguments.types.len() != metadata.parameters { + return Err(Error::Protocol(format!( + "Prepared statement expected {} parameters but {} parameters were provided", + metadata.parameters, + arguments.types.len() + ))); + } + // https://dev.mysql.com/doc/internals/en/com-stmt-execute.html self.inner.stream .send_packet(StatementExecute {