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错误”

最佳答案

您遇到什么问题?如果发现rollback命令不起作用,则应检查表类型-上次检查时,MyISAM表不支持事务,因此必须使用InnoDB表。

如果数据量足够小,则可以:


使用mysqldump转储数据库,以便您具有“之前”副本。确保包括表定义和“ DROP IF EXISTS”语句。
尝试加载“ log.sql”
如果发生错误,请加载“之前”副本以将所有内容恢复原状。假设转储也没有问题。

关于mysql - MYSQL从log.sql全部或全部不备份,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22914166/

10-11 21:27