У меня есть код C #, который циклически просматривает .sql
файлы и выполняет то, что внутри них, для настройки базы данных.
Один .sql
файл в основном выглядит следующим образом:
DROP PROCEDURE IF EXISTS myProc;
DELIMITER $$
CREATE PROCEDURE myProc()
BEGIN
-- procedure stuff goes here
END $$
DELIMITER ;
CALL myProc();
Когда я ввожу это в окно скрипта MySQL Query Browser, оно работает идеально ... снова и снова, как и хотелось бы.
Однако, если я положу строку в IDbCommand
и выполню ее ...
connection.Open(); // An IDbConnection
IDbTransaction transaction = connection.BeginTransaction();
using (IDbCommand cmd = connection.CreateCommand())
{
cmd.Connection = connection;
cmd.Transaction = transaction;
cmd.CommandText = line;
cmd.CommandType = CommandType.Text;
try
{
cmd.ExecuteNonQuery();
}
catch (SqlException ex)
{
transaction.Rollback();
return false;
}
}
transaction.Commit();
connection.Close();
... я получаю страшное исключение 1064 ...
У вас ошибка в синтаксисе SQL; проверьте руководство, которое
соответствует вашей версии сервера MySQL для правильного использования синтаксиса
около 'РАЗДЕЛИТЕЛЬ $$ ПРОЦЕДУРА СОЗДАНИЯ myProc () НАЧИНАЕТСЯ ...
Итак, вопрос в том ... почему MySQL позволяет мне делать это без проблем, но когда я пытаюсь запустить его из C #, он терпит неудачу? И, конечно, второй вопрос, как я должен это исправить.