目前碰到个问题,断电后mysql表经常损坏,想做个自动修复的批处理。1 mysql的my.INI设置自动修复,根本不起作用。
2 myisamcheck 工具也只能对每个表做修复,不能批量,linux里面支持*.*文件,windows不行。只好写个循环,获得所有的表名,先check table,如果不是ok的,repair table。
但是发现存储过程里面根本没法得到 check table 的结果。有什么办法吗??现在只好在c代码里面循环获得check table的结果。
2 myisamcheck 工具也只能对每个表做修复,不能批量,linux里面支持*.*文件,windows不行。只好写个循环,获得所有的表名,先check table,如果不是ok的,repair table。
但是发现存储过程里面根本没法得到 check table 的结果。有什么办法吗??现在只好在c代码里面循环获得check table的结果。
myisamcheck -r -q 再快速修复最重要的是看报什么错出现outmemory error 的话
就要创建新的MYI文件$ myisamchk -e "C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.1\data\test\*.MYI"
批量是没问题的
嗯,看来只能把mysqlcheck加到定制包里面去。但是真的没办法在 存储过程中获取 check table 和show tables这样的命令的结果集吗????
可以在存储过程中实现。
嗯,现在就是存储过程,用的information_schema遍历的表,但是关键问题是 check table xxx的结果集得不到,不知道表是好是坏。
check table 本身也返回结果集,在工具里面执行能显示结果集,程序用api也能获得这个结果集。
但是我是想在 存储过程里面 获取check table 的结果集,在存储过程里面遍历该结果集,做逻辑。。
有办法吗。
没有办法,如果你用的外部程序是可能访问这个结果集的,但MYSQL自身的存储过程中不行。
根据我的了解,mysql目前在存储过程中无法利用这个结果集的,所以考虑在程序外面循环表,每次把表名作为存储过程的参数传进来,然后获取存储过程的结果集来处理...