Mysql, skapa procedures från *.sql fil

Permalänk
Medlem

Mysql, skapa procedures från *.sql fil

Håller på med ett litet CMS system och sitter nu med själva installationsdelen.
Jag har dumpat databasen till en .sql fil som innehåller all nödvändig sql.

När installationen av CMS:et körs så läses den backupfilen och skapar alla tabeller och data.
Detta fungerar finfint.

Problemet är dock att det även finns en bunt med procedures som måste skapas, och det är här det strular.

Koden i sql filen för att skapa en procedure ser ut enligt följande:

DELIMITER $$ /*!50003 SET @TEMP_SQL_MODE=@@SQL_MODE, SQL_MODE='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ $$ CREATE DEFINER=`root`@`%` PROCEDURE `AdminMenu_CheckIfUserIsAdmin`(IN _userID VARCHAR(36)) BEGIN SELECT * FROM users_adminmenu WHERE userID = _userID; END $$ /*!50003 SET SESSION SQL_MODE=@TEMP_SQL_MODE */ $$ DELIMITER ;

Och felet som genereras är:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER $$

Någon som har förslag på lösning?

Mysql servern körs på en Windows maskin om det har betydelse är i version 5.1.44

Visa signatur

...

Permalänk
Medlem

Det enda jag kan komma på är att det är för många DELIMITER tecken...
Efter "END" har du två stycken och även efter "DELIMITER $$" har du en onödig, så vitt jag kan se.
Borde alltså det inte räcka med?

DELIMITER $$ /*!50003 SET @TEMP_SQL_MODE=@@SQL_MODE, SQL_MODE='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ CREATE DEFINER=`root`@`%` PROCEDURE `AdminMenu_CheckIfUserIsAdmin`(IN _userID VARCHAR(36)) BEGIN SELECT * FROM users_adminmenu WHERE userID = _userID; END $$ /*!50003 SET SESSION SQL_MODE=@TEMP_SQL_MODE */ DELIMITER ;

Visa signatur

citera!

Permalänk
Medlem

Fungerar inte ändå, blir samma fel.

Det fullständiga felmeddelandet är:

MySql.Data.MySqlClient.MySqlException (0x80004005): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER $$ /*!50003 SET @TEMP_SQL_MODE=@@SQL_MODE, SQL_MODE='STRICT_TRANS_TAB' at line 1 vid MySql.Data.MySqlClient.MySqlStream.ReadPacket() vid MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int32& insertedId) vid MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int32& insertedId) vid MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId) vid MySql.Data.MySqlClient.MySqlDataReader.NextResult() vid MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) vid MySql.Data.MySqlClient.MySqlCommand.ExecuteDbDataReader(CommandBehavior behavior) vid System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) vid System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) vid System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) vid System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) vid Install_Default.btnTestDB_Click(Object sender, EventArgs e) i c:\Users\Administratör\Desktop\Hemsidor\Webb\Systemet\Install\Default.aspx.cs:rad 44

Det fungerar om jag tar bort delimiters, fast då fungerar det bara att skapa den första proceduren, sen blir det fel.

Visa signatur

...