Hi,

I'm tyring to use the dbupgrade-maven-plugin plugin to upgrade a MySQL DB.
However I seem to be having problems with the delimiter command.

The following SQL:

DELIMITER !
DROP PROCEDURE IF EXISTS upgrade_database !
CREATE PROCEDURE upgrade_database() BEGIN


  IF NOT EXISTS((
    select 'true'
    from `information_schema`.`columns`
    where `table_name` = 'user' and `column_name` = 'first_name'
  ))
  THEN
    alter table `user` add column `first_name` varchar(20) not null default
'';
  END IF;

  IF NOT EXISTS((
    select 'true'
    from `information_schema`.`columns`
    where `table_name` = 'user' and `column_name` = 'family_name'
  ))
  THEN
    alter table `user` add column `family_name` varchar(20) not null default
'';
  END IF;

  IF NOT EXISTS((
    select 'true'
    from `information_schema`.`columns`
    where `table_name` = 'user' and `column_name` = 'email'
  ))
  THEN
    alter table `user` add column `email` varchar(20) not null default '';
  END IF;

  IF NOT EXISTS((
    select 'true'
    from `information_schema`.`columns`
    where `table_name` = 'user' and `column_name` = 'dob'
  ))
  THEN
    alter table `user` add column `dob` datetime not null;
  END IF;


END !
CALL upgrade_database() !
DROP PROCEDURE IF EXISTS upgrade_database !
DELIMITER ;


... will perfectly fine if I execute it through MySQL Query Browser. However
if I use the same SQL in my dbupgrade script I get this error:




[ERROR] Failed to execute goal
org.codehaus.mojo:dbupgrade-maven-plugin:1.0-beta-1-SNAPSHOT:filelist-upgrade
(dbupgrade) on project ZenTemplate: Unable to perform file upgrade:
D:\workspaces\poc\ZenTemplate\src\db\upgrade\01\00000003.sql. Unable to
execute:  DELIMITER !
[ERROR] DROP PROCEDURE IF EXISTS upgrade_database !
[ERROR] CREATE PROCEDURE upgrade_database() BEGIN
[ERROR]
[ERROR]
[ERROR] IF NOT EXISTS((
[ERROR] select 'true'
[ERROR] from `information_schema`.`columns`
[ERROR] where `table_name` = 'user' and `column_name` = 'first_name'
[ERROR] ))
[ERROR] THEN
[ERROR] alter table `user` add column `first_name` varchar(20) not null
default '' 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 !
[ERROR] DROP PROCEDURE IF EXISTS upgrade_database !
[ERROR] CREATE PROCEDURE upgra' at line 1
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e
switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.

Any ideas why this might be? Is there a work around I can use?

Cheers!
Adam

Reply via email to