cannot execute a stored procedure inside migration
Reported by alain dazzi | March 7th, 2012 @ 11:46 PM | in BACKLOG
I have the following stored procedure which works when executed by hand.
-- coding:utf-8 --
SQL_UP = u"""
DELIMITER $$
DROP PROCEDURE IF EXISTS DropFK $$
CREATE PROCEDURE DropFK (
IN parm_table_name VARCHAR(100),
IN parm_key_name VARCHAR(100)
) BEGIN
-- Verify the foreign key exists IF EXISTS (SELECT NULL FROM
information_schema.TABLE_CONSTRAINTS WHERE CONSTRAINT_SCHEMA =
DATABASE() AND CONSTRAINT_NAME = parm_key_name) THEN
-- Turn the parameters into local variables set @ParmTable =
parm_table_name ;
set @ParmKey = parm_key_name ;
-- Create the full statement to execute set @StatementToExecute =
concat('ALTER TABLE ',@ParmTable,' DROP FOREIGN KEY
',@ParmKey);
-- Prepare and execute the statement that was built prepare
DynamicStatement from @StatementToExecute ;
execute DynamicStatement ;
-- Cleanup the prepared statement deallocate prepare
DynamicStatement ;
END IF;
END $$
DELIMITER ;
"""
SQL_DOWN = u"""
"""
when I put it inside a migration and invoke db-migrate I get ...
~/Desktop/mysql/dbmigrate$ db-migrate
Starting DB migration...
- Current version is: 0 - Destination version is:
20120308020932
Starting migration up!
*** versions: ['20120228235709', '20120308003414',
'20120308003950', '20120308004106', '20120308020932']
===== executing 20120228235709_tools.migration (up) ===== ===== ERROR executing /Users/alaindazzi/Desktop/mysql/dbmigrate/migrations/20120228235709_tools.migration (up) ===== [ERROR] error executing migration: (1064, "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 $$ \nDROP PROCEDURE IF EXISTS DropFK $$ \nCREATE PROCEDURE DropFK ( \nIN ' at line 1")
[ERROR DETAILS] SQL command was: DELIMITER $$
DROP PROCEDURE IF EXISTS DropFK $$
CREATE PROCEDURE DropFK (
IN parm_table_name VARCHAR(100),
IN parm_key_name VARCHAR(100)
) BEGIN
-- Verify the foreign key exists IF EXISTS (SELECT NULL FROM
information_schema.TABLE_CONSTRAINTS WHERE CONSTRAINT_SCHEMA =
DATABASE() AND CONSTRAINT_NAME = parm_key_name) THEN
-- Turn the parameters into local variables set @ParmTable =
parm_table_name
~/Desktop/mysql/dbmigrate$
Is there a workaround for this issue? display the sql show the proper code (--showsqlonly).
No comments found
Please Sign in or create a free account to add a new ticket.
With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป
simple-db-migrate is a database migration tool inpired on Rails migrations. For more info check the project website: http://guilhermechapiewski.github.com/simple-db-migrate/