J'ai un code C# qui parcourt .sql
fichiers et exécute ce qu'ils contiennent pour créer une base de données.C#, MySQL, ADO.NET, délimiteur provoquant une erreur de syntaxe
Un fichier .sql
est essentiellement comme suit:
DROP PROCEDURE IF EXISTS myProc;
DELIMITER $$
CREATE PROCEDURE myProc()
BEGIN
-- procedure stuff goes here
END $$
DELIMITER ;
CALL myProc();
Quand je entrée ceci dans la fenêtre de script de MySQL Query Browser, il fonctionne parfaitement ... encore et encore, tout comme on le souhaitez.
Cependant, si je mets la chaîne dans mon IDbCommand
et l'exécuter ...
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();
... Je reçois l'exception redoutée 1064 ...
Vous avez une erreur votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près « DELIMITER $$ CREATE PROCEDURE myProc() BEGIN ...
Donc, la question est ... pourquoi MySQL laisse Je fais ça sans problèmes, mais quand j'essaye de l'exécuter depuis C#, ça échoue? Et bien sûr, la deuxième question est de savoir comment je suis censé le réparer.
C'est bon. Je n'ai jamais vu ça dans mes recherches. Merci. – Brillyints