Skip to content

ExecuteSqlFile causes issues with Mysql stored procedure files. #9

@DSUK

Description

@DSUK

with mysql, a valid sql file may contain things that are not valid for a single query ( such as DELIMITER $$ )

To Recreate:

build.cake:

#addin "Cake.SqlTools"
#addin "nuget:?package=MySql.Data"
using MySql.Data.MySqlClient;
Task("Recreate1").Does(()=> {
	var settings = new SqlQuerySettings {
		Provider = "MySql",
		ConnectionString = __the_connectionstring
	};
	var k = ExecuteSqlFile("test.sql", settings);
}); //fails

Task("Recreate2").Does(() => {
	using(var connection = new MySqlConnection(__the_connectionstring))
	{
		connection.Open();
		var dat = System.IO.File.ReadAllText("test.sql");
		var script = new MySqlScript(connection,dat);
		script.ExecuteAsync().GetAwaiter().GetResult();
	}
}); //works

test.sql:

DELIMITER $$

DROP PROCEDURE IF EXISTS testproc $$
CREATE PROCEDURE testproc()
SQL SECURITY INVOKER
BEGIN
	SELECT 1;
END $$

DELIMITER ;

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions