Discussion:
Stored procedure
(too old to reply)
Machiel Richards
2011-01-05 10:00:58 UTC
Permalink
Good day all

I am hoping that someone can assist me here.

As per a client requirement, I am writing a
script/stored procedure combination in order to do the following:

- Script to be run within a cron once a day
according to a set schedule.
- script to connect to mysql and call a stored
procedure
- stored to procedure to do the following:

* retrieve row id of the record
that indicates the last record of a specified date (i.e 00:00 yesterday)
[select max(id) into
max_id from table1 where utc < dt]

* delete records from table2 where
id < max_id
* delete records from table1
where id < max_id

After a struggle to get the script and stored
procedure working I am now stuck at the following point.

the date that needs to be specified to the
stored procedure must be in the following format:

2011-01-04 00:00
(i.e. yesterday 00:00) meaning that everything before this date and time
needs to be deleted.

However when trying to run the script with
the date like this, then I get the following message:


ERROR 1064 (42000) at line 1: 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 '00:00)' at
line 1


I initially had the script create the
date in a different manner but then the 00:00 was seen as a seperate
argument which didn't work. After some changes the date is now being
read correctly from what I can tell but now I get the message above.


Herewith my script and stored procedure definitions:



Script:

#!/bin/bash

DATE="`date --date="1 days ago" +%Y-%m-%d` 00:00"
echo "$DATE"

mysqldump -u root -p<password> --databases <DB>
/backups/DB_backup.dump
mysql -u root -p<password> -D <DB> -e "call select_delete_id_2($DATE)"

exit




Stored Proc:


begin declare max_id int(11); select max(id) into max_id from table1
where utc < dt; delete from table2 where id < max_id; delete from table1
where id < max_id; end


Does anybody perhaps have any suggestions?

Regards
Machiel
petya
2011-01-05 11:15:59 UTC
Permalink
Hi,

Use the mysql event scheduler instead of cron, the bash script is quite
pointless, and call your stored procedure with now() - interval 1 day
parameter.

Peter
Post by Machiel Richards
Good day all
I am hoping that someone can assist me here.
As per a client requirement, I am writing a
- Script to be run within a cron once a day
according to a set schedule.
- script to connect to mysql and call a stored
procedure
* retrieve row id of the record
that indicates the last record of a specified date (i.e 00:00 yesterday)
[select max(id) into
max_id from table1 where utc< dt]
* delete records from table2 where
id< max_id
* delete records from table1
where id< max_id
After a struggle to get the script and stored
procedure working I am now stuck at the following point.
the date that needs to be specified to the
2011-01-04 00:00
(i.e. yesterday 00:00) meaning that everything before this date and time
needs to be deleted.
However when trying to run the script with
ERROR 1064 (42000) at line 1: 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 '00:00)' at
line 1
I initially had the script create the
date in a different manner but then the 00:00 was seen as a seperate
argument which didn't work. After some changes the date is now being
read correctly from what I can tell but now I get the message above.
#!/bin/bash
DATE="`date --date="1 days ago" +%Y-%m-%d` 00:00"
echo "$DATE"
mysqldump -u root -p<password> --databases<DB>
/backups/DB_backup.dump
mysql -u root -p<password> -D<DB> -e "call select_delete_id_2($DATE)"
exit
begin declare max_id int(11); select max(id) into max_id from table1
where utc< dt; delete from table2 where id< max_id; delete from table1
where id< max_id; end
Does anybody perhaps have any suggestions?
Regards
Machiel
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/mysql?unsub=gcdmg-mysql-***@m.gmane.org
Machiel Richards
2011-01-05 11:21:28 UTC
Permalink
HI

How do I use the mysql event scheduler?

I have not used this as yet so not sure how to use it.


Regards
Machiel

-----Original Message-----
From: petya <***@petya.org.hu>
To: Machiel Richards <***@rdc.co.za>, ***@lists.mysql.com
Subject: Re: Stored procedure
Date: Wed, 05 Jan 2011 12:15:59 +0100


Hi,

Use the mysql event scheduler instead of cron, the bash script is quite
pointless, and call your stored procedure with now() - interval 1 day
parameter.

Peter
Post by Machiel Richards
Good day all
I am hoping that someone can assist me here.
As per a client requirement, I am writing a
- Script to be run within a cron once a day
according to a set schedule.
- script to connect to mysql and call a stored
procedure
* retrieve row id of the record
that indicates the last record of a specified date (i.e 00:00 yesterday)
[select max(id) into
max_id from table1 where utc< dt]
* delete records from table2 where
id< max_id
* delete records from table1
where id< max_id
After a struggle to get the script and stored
procedure working I am now stuck at the following point.
the date that needs to be specified to the
2011-01-04 00:00
(i.e. yesterday 00:00) meaning that everything before this date and time
needs to be deleted.
However when trying to run the script with
ERROR 1064 (42000) at line 1: 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 '00:00)' at
line 1
I initially had the script create the
date in a different manner but then the 00:00 was seen as a seperate
argument which didn't work. After some changes the date is now being
read correctly from what I can tell but now I get the message above.
#!/bin/bash
DATE="`date --date="1 days ago" +%Y-%m-%d` 00:00"
echo "$DATE"
mysqldump -u root -p<password> --databases<DB>
/backups/DB_backup.dump
mysql -u root -p<password> -D<DB> -e "call select_delete_id_2($DATE)"
exit
begin declare max_id int(11); select max(id) into max_id from table1
where utc< dt; delete from table2 where id< max_id; delete from table1
where id< max_id; end
Does anybody perhaps have any suggestions?
Regards
Machiel
petya
2011-01-05 11:44:07 UTC
Permalink
http://dev.mysql.com/doc/refman/5.1/en/events.html
Post by Machiel Richards
HI
How do I use the mysql event scheduler?
I have not used this as yet so not sure how to use it.
Regards
Machiel
-----Original Message-----
*Subject*: Re: Stored procedure
*Date*: Wed, 05 Jan 2011 12:15:59 +0100
Hi,
Use the mysql event scheduler instead of cron, the bash script is quite
pointless, and call your stored procedure with now() - interval 1 day
parameter.
Peter
Post by Machiel Richards
Good day all
I am hoping that someone can assist me here.
As per a client requirement, I am writing a
- Script to be run within a cron once a day
according to a set schedule.
- script to connect to mysql and call a stored
procedure
* retrieve row id of the record
that indicates the last record of a specified date (i.e 00:00 yesterday)
[select max(id) into
max_id from table1 where utc< dt]
* delete records from table2 where
id< max_id
* delete records from table1
where id< max_id
After a struggle to get the script and stored
procedure working I am now stuck at the following point.
the date that needs to be specified to the
2011-01-04 00:00
(i.e. yesterday 00:00) meaning that everything before this date and time
needs to be deleted.
However when trying to run the script with
ERROR 1064 (42000) at line 1: 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 '00:00)' at
line 1
I initially had the script create the
date in a different manner but then the 00:00 was seen as a seperate
argument which didn't work. After some changes the date is now being
read correctly from what I can tell but now I get the message above.
#!/bin/bash
DATE="`date --date="1 days ago" +%Y-%m-%d` 00:00"
echo"$DATE"
mysqldump -u root -p<password> --databases<DB>
/backups/DB_backup.dump
mysql -u root -p<password> -D<DB> -e"call select_delete_id_2($DATE)"
exit
begin declare max_id int(11); select max(id) into max_id from table1
where utc< dt; delete from table2 where id< max_id; delete from table1
where id< max_id; end
Does anybody perhaps have any suggestions?
Regards
Machiel
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/mysql?unsub=gcdmg-mysql-***@m.gmane.org
Continue reading on narkive:
Loading...