符合中小企业对网站设计、功能常规化式的企业展示型网站建设
本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...
商城网站建设因基本功能的需求不同费用上面也有很大的差别...
手机微信网站开发、微信官网、微信商城网站...
mysql的定时任务一般用event(事件)来完成,触发器无法完成。
成都创新互联是专业的蒲城网站建设公司,蒲城接单;提供成都网站设计、网站制作、外贸营销网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行蒲城网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
一、通过mysql的命令行客户端来完成
1、set global event_scheduler =1; //开启event_scheduler
执行这个语句如果出现,可在mysql的配置文档中设置[mysqld]段中添加 event_scheduler=ON
如果重启mysql;这种情况下依然出错,Error Code: 1290. The MySQL server is running with the --event-scheduler=DISABLED
or --skip-grant-tables option so it cannot execute this statement,这个错误是说启动服务器时如果指定了--skip-grant-tables选项,则event_scheduler则自动被设置为DISABLED。命令行或配置文件的设置都会被覆盖。建议重现安装mysql或是修改启动参数(在系统服务中指定)。
查看event_scheduler状态:show status like '%event%'; 或SELECT @@event_scheduler;
2、CREATE PROCEDURE Mypro() //创建存储过程
BEGIN
update userinfo SET endtime = now() WHERE id = '155';
END;
3、创建event My_enevt,每隔三十秒执行一次
create event if not exists e_test
on schedule every 30 second
on completion preserve
do call Mypro();
4、关闭事件
alter event e_test ON COMPLETION PRESERVE DISABLE;
5、开启事件
alter event e_test ON COMPLETION PRESERVE ENABLE;
语法:
CREATE EVENT [IF NOT EXISTS] event_name ON SCHEDULE schedule [ON COMPLETION
[NOT] PRESERVE] [ENABLE | DISABLE] [COMMENT 'comment'] DO sql_statement;
schedule: AT TIMESTAMP [+ INTERVAL INTERVAL] | EVERY INTERVAL [STARTS TIMESTAMP]
[ENDS TIMESTAMP] INTERVAL: quantity {YEAR | QUARTER | MONTH | DAY | HOUR |
MINUTE | WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | DAY_SECOND |
HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具。前者使用起来比较简便。推荐使用。
1. check table 和 repair table
登陆mysql 终端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出现的结果说Status是OK,则不用修复,如果有Error,可以用:
repair table tabTest;
进行修复,修复之后可以在用check table命令来进行检查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:
myisamchk tablename.MYI
进行检测,如果需要修复的话,可以使用:
myisamchk -of tablename.MYI
关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL服务器没有访问这个数据表,保险的情况下是最好在进行检测时把MySQL服务器Shutdown掉。
-----------------------------
另外可以把下面的命令放在你的rc.local里面启动MySQL服务器前:
[ -x /tmp/mysql.sock ] /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL监听的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/mysql/mysql.sock,对于使用源码安装则是/tmp/mysql.sock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。
需要注意的时,如果你打算把这条命令放在你的rc.local里面,必须确认在执行这条指令时MySQL服务器必须没有启动!检测修复所有数据库(表)
建一个批处理,计划任务定时运行批处理。
批处理如下:
mysql -u用户名 -p密码 所需执行语句.sql 返回的结果.txt
最常用的做法是使用UNIX的cron直接执行Java程序。
并不需要在Java做的那么复杂。
Windows服务器也有类似于cron的任务管理功能,同理
---------------------------
Tomcat不是用来管理定时任务的,如果没有HTTP请求,Servlet是不会被执行的。
建议lz把定期执行的处理做成一个独立的Java程序,用cron执行。
如果不想写独立的Java程序,也可以用cron定期向Tomcat发送Http请求,但是,这样做的话注意程序处理时间不能太长,因为HTTP通信有timeout的制约。
具体怎么用我不清楚,事件是相当于mssql的作业
下面是调用存储过程
delimiter //
drop procedure if exists up_t1;
create procedure up_t1()
begin
select 'hello world';
end
;
create procedure up_t2()
begin
call up_t1();
select 'hello world2 ';
end;
//
1、启动Navicat for MySQL,新建数据库连接,打开数据库,可能有点啰嗦。
2、可以先查看定时任务的是否开启。通过以下命令:show variables like '%sche%';
3、如果其设置值为为 OFF 或 0 ,通过执行下列语句,来开启event_scheduler,set global event_scheduler =1,把设置为设为ON 或 1。
4、新建一个函数 ,取名为update_qiandao ,内容为 UPDATE week7_user SET isqiandao = 0
5、参照上图,新建一个事件 ,在定义里写 call update_qiandao() --也就是之前定义的函数
在“计划”选项卡中设置 执行时间,这里我选择的是每天。
6、完成结束