golang 的 gorm操作数据库时如何设置当前会话的mysql变量?

风飘扬
  • 1
新手上路,请多包涵

问题描述

mysql配置中开启了binlog。但由于某些需求,某一张表的操作不想记binlog日志。比如叫A表, 在操作A表之前 我先执行
DB.Exec(fmt.Sprintf("SET sql_log_bin=%d", 0)).Error
然后再执行
DB.Exec("insert into A.......").Error
执行完之后再执行:
DB.Exec(fmt.Sprintf("SET sql_log_bin=%d", 1)).Error

但这样操作完之后,binlog文件中还是记录了A表的操作。我想不记A表的操作,效果没有实现。

问题出现的环境背景及自己尝试过哪些方法

windows,gorm 


相关代码

DB, err = gorm.Open("mysql", "........")
DB.LogMode(debug.ShowSQL)
DB.DB().SetMaxOpenConns(255)
DB.DB().SetMaxIdleConns(128)
DB.DB().SetConnMaxLifetime(7200 * time.Second)

/////
DB.Exec(fmt.Sprintf("SET sql_log_bin=%d", 0)).Error
DB.Exec("insert into A.......").Error
DB.Exec(fmt.Sprintf("SET sql_log_bin=%d", 1)).Error

你期待的结果是什么?实际看到的错误信息又是什么?

期待操作A表不记录binlog。实际是我设置了会话级别的sql_log_bin没有效果,还是在binlog记录了A表的操作。

回复
阅读 174
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏