MYSQL从log.sql重新转储(全部或无)
mysql -h "$databaseHost" -u "$username" --password="$password" "$databaseName" < /path/to/project/log.sql如果此log.sql文件在中间包含一个错误,则在错误完成之前和错误未完成后进行事务处理。
但是,我希望整个sql文件显示是重新转储,否则文件中的任何内容都不应该重新转储,我使用的是MySQL数据库和Debian(6.0.1) O.S。
log.sql
start transaction;
insert into demo_table values('abc');
insert just for to create an error;
insert into demo_table values('xyz');
commit;它的shell脚本:
rollBack () {
if [ $mysql_error -eq 1 ]; then
mysql -h "$databaseHost" -u "$username" --password="$password" "$databaseName" -e "rollback;";
exit 0;
fi
}
mysql -h "$databaseHost" -u "$username" --password="$password" "$databaseName" < /path/to/project/log.sql|| if [ "$?" -ne 0 ]; then mysql_error=1; rollBack; fi我试过这个代码,它不起作用,任何帮助或建议,请朋友们
存储过程
DELIMITER $$
CREATE PROCEDURE sp_exec_dumpfile(
IN in_file VARCHAR(1024)
)
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
END ;
START TRANSACTION;
SOURCE in_file;
COMMIT;
END $$
DELIMITER ;错误: SYTANX在源“in”附近的错误
发布于 2014-04-07 11:53:39
你遇到什么问题了?如果您发现rollback命令不起作用,那么您应该检查您的表类型--上次我检查时,MyISAM表不支持事务,您必须使用InnoDB表。
如果数据量足够小,则可以:
mysqldump转储数据库,以便您有一个“前”复制。确保包含表定义和“如果存在”语句。https://stackoverflow.com/questions/22914166
复制相似问题