Cannot drop procedure with weird names in MySQL - mysql

In MySQL, I cannot drop procedure mobisys_mtly_db`cms_partner_add_or_edit because it has symbol `.
Detailed example in console
mysql> DROP PROCEDURE mobisys_mtly_db`cms_partner_add_or_edit;
`> `
-> ;
ERROR 1064 (42000): 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 'cms_partner_add_or_edit; ' at line 1
mysql> DROP PROCEDURE "mobisys_mtly_db\`cms_partner_add_or_edit";
ERROR 1064 (42000): 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 '"mobisys_mtly_db`cms_partner_add_or_edit"' at line 1
The following do not work:
DROP PROCEDURE mobisys_mtly_db`cms_partner_add_or_edit
DROP PROCEDURE mobisys_mtly_db\`cms_partner_add_or_edit
DROP PROCEDURE 'mobisys_mtly_db`cms_partner_add_or_edit'
DROP PROCEDURE 'mobisys_mtly_db\`cms_partner_add_or_edit'
DROP PROCEDURE "mobisys_mtly_db`cms_partner_add_or_edit"
DROP PROCEDURE "mobisys_mtly_db\`cms_partner_add_or_edit"

You should use this query -
DROP PROCEDURE `mobisys_mtly_db``cms_partner_add_or_edit`
Documentation page - Schema Object Names.

Related

how to use mysql variables when creating database

set #username = "botany";
set #password = "botany";
set #databaseName = "botanyDatabase";
drop database if exists #databaseName;
this is the code. But it gives the error message:
ERROR 1064 (42000) at line 4 in file: '/home/list/botany/app/botany.sql': You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '#databaseName' at line 1
So how can i use the variables when creating database.

MySQL 8: Alter definer of stored procedure

In versions of MySQL prior to 8, altering the definer of a stored procedure is possible by manipulating the mysql.proc table. This table was removed in 8 and replaced by the data dictionary. It looks like the definer can be modified using ALTER PROCEDURE, but for the life of me I cannot get the syntax specified to work.
mysql> alter procedure refresh_basic sql security definer=`foo`#`127.0.0.1`;
ERROR 1064 (42000): 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 '=`foo`#`127.0.0.1`' at line 1
mysql> alter procedure refresh_basic sql security definer='foo#127.0.0.1';
ERROR 1064 (42000): 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 '='foo#127.0.0.1'' at line 1
I also tried both of the above without using =, but got similar errors. How does one actually do this? Thanks!

SQL Procedure error in printing statement

Delimiter $$;
create procedure greetings()
dbms_output.put_line('Hello'); $$
This gives the following error:
ERROR 1064 (42000): 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 '.put_line('Hello')' at line 1
Any solutions?
MySQL does not provide dbms_output.put_line().
Instead of that you can simply try below code in your procedure.
SELECT 'Hello';

DROP USER IF EXISTS triggers syntax error in MySQL

I have a brand new mysql installation. I want to delete a user only if exists and I have only root user. I'm trying to run from shell:
DROP USER IF EXISTS foo;
or
DROP USER IF EXISTS 'foo'#'localhost';
But mysql returns this kind of messages:
ERROR 1064 (42000): 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 'IF EXISTS foo' at line 1
What am I doing wrong?
I read this post but does not explain why IF EXISTS statement does not work
From your own link:
As of MySQL 5.7.8, the IF EXISTS clause can be used, which causes the
statement to produce a warning for each named account that does not
exist, rather than an error.
You can find out your server version with e.g.:
select ##version;

MySQL update Trigger to update data table value After Insert on another table

I have been stumbling on writing some an MySQL trigger and was hopping someone could help me find the most elegant solution to solve my issue. I have Looked many places and cannot seem to find where the bug is in this code. I also tried not adjusting the delimiter as it seems to create problems I am able to create a trigger without setting the delimiter if I replace the update statement by something else.
The code I have is:
USE MyTable
DELIMITER //
--Trigger to update Scheduling 'Status' and 'Retries' values
CREATE TRIGGER `Scheduling-Updatde_After_Result-Insert`
AFTER INSERT ON Results
FOR EACH ROW BEGIN
UPDATE `Scheduling`
SET
Running = FALSE,
Retries = Retries + 1
WHERE ID = NEW.ID;
END//
DELIMITER ;
I get the following errors:
18:03:25 [DELIMITER - 0 row(s), 0.000 secs] [Error Code: 1064, SQL State: 42000] 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
CREATE TRIGGER acapella.Scheduling-Updatde_After_Result-Insert
' at line 1
Code: 1064 SQL State: 42000 --- 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
CREATE TRIGGER Scheduling-Updatde_After_Result-Insert
' at line 1
18:03:25 [END - 0 row(s), 0.000 secs] [Error Code: 1064, SQL State: 42000] 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 'END
DELIMITER' at line 1
Code: 1064 SQL State: 42000 --- 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 'END
DELIMITER' at line 1