Have I read the related troubleshooter articles above before posting (which pages?)? Yes
Have I searched the tickets before posting? Yes
Have I read the documentation before posting (which pages?)? Yes
Joomla! version: 2.5.11
PHP version: 5.3.13
MySQL version: 5.5.24
Host: (optional, but it helps us help you)
Akeeba Backup version: 3.7.7
EXTREMELY IMPORTANT: Please attach a ZIP file containing your Akeeba Backup log file in order for us to help you with any backup or restoration issue. If the file is over 2Mb, please upload it on your server and post a link to it.
Description of my issue:
When restoring backup that includes database functions with embedded semi-colons (';'), the database restore returns an exception.
An example function (that I extracted from the backup archive) is:
CREATE FUNCTION `fn_Maintain_Account_mail_fee_code`(primary_remote_address_id int) RETURNS varchar(4) CHARSET latin1 begin declare other_address_country_code varchar(2); declare new_mail_fee_code varchar(4); if primary_remote_address_id <> 0 and primary_remote_address_id is not NULL then set other_address_country_code = (select country_code from other_address oa where oa.other_address_id = primary_remote_address_id ); case when other_address_country_code = 'US' or other_address_country_code = '' then set new_mail_fee_code = NULL; when other_address_country_code = 'CA' then set new_mail_fee_code = 'CAMA'; else set new_mail_fee_code = 'FRGN'; end case; else set new_mail_fee_code = NULL; end if; return new_mail_fee_code; end;;
Note the 2 semi-colons at the end of the function definition. To get these to properly restore, I had to redefine the statement delimiter in mysql as:
delimiter //
CREATE FUNCTION `fn_Maintain_Account_mail_fee_code`(primary_remote_address_id int) RETURNS varchar(4) CHARSET latin1 begin declare other_address_country_code varchar(2); declare new_mail_fee_code varchar(4); if primary_remote_address_id <> 0 and primary_remote_address_id is not NULL then set other_address_country_code = (select country_code from other_address oa where oa.other_address_id = primary_remote_address_id ); case when other_address_country_code = 'US' or other_address_country_code = '' then set new_mail_fee_code = NULL; when other_address_country_code = 'CA' then set new_mail_fee_code = 'CAMA'; else set new_mail_fee_code = 'FRGN'; end case; else set new_mail_fee_code = NULL; end if; return new_mail_fee_code; end//
delimiter ;
[BTW - I hit return after entering subject for this ticket and was surprised when it was created without my adding any issue information. Sorry!]