首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL从log.sql中变红或全部或无

MYSQL从log.sql中变红或全部或无
EN

Stack Overflow用户
提问于 2014-04-07 11:29:52
回答 1查看 309关注 0票数 0

MYSQL从log.sql重新转储(全部或无)

代码语言:javascript
复制
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

代码语言:javascript
复制
start transaction;
insert into demo_table values('abc');
insert just for to create an error;
insert into demo_table values('xyz');
commit;

它的shell脚本:

代码语言:javascript
复制
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

我试过这个代码,它不起作用,任何帮助或建议,请朋友们

存储过程

代码语言:javascript
复制
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”附近的错误

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-07 11:53:39

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

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

  • 使用mysqldump转储数据库,以便您有一个“前”复制。确保包含表定义和“如果存在”语句。
  • 尝试加载"log.sql“
  • 如果发生错误,请加载“前”副本,将所有内容恢复到原来的状态。这假设转储也不会遇到问题。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22914166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档