获取错误无法执行语句:因为BINLOG_FORMAT = STATEMENT

时间:2018-05-15 13:50:16

标签: mysql .net-4.5 quartz-scheduler quartz transaction-isolation

我有一个本地开发服务器,我测试了几乎所有的石英功能(scheduling / execution / e.t.c),其中mysql设置log_bin = off 当我在我的登台服务器(log_bin = on)上部署相同的脚本时,我收到以下错误。

JobStoreTX.Log      Failure occurred during job recovery: Couldn't recover jobs: Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.

Quartz.JobPersistenceException:无法恢复作业:无法执行语句:无法写入二进制日志,因为BINLOG_FORMAT = STATEMENT且至少有一个表使用限制为基于行的日志记录的存储引擎。当事务隔离级别为READ COMMITTED或READ UNCOMMITTED时,InnoDB仅限于行记录。 ---> MySql.Data.MySqlClient.MySqlException:无法执行语句:无法写入二进制日志,因为BINLOG_FORMAT = STATEMENT且至少有一个表使用仅限于基于行的日志记录的存储引擎。当事务隔离级别为READ COMMITTED或READ UNCOMMITTED时,InnoDB仅限于行记录。

在挖掘时我发现它是由于binlog_format = Statement

无论如何,我可以使用上面的设置(意味着将binlog_format变为混合)

1 个答案:

答案 0 :(得分:0)

根据mysql论坛的建议,我更改了binlog_format = MIXED 它开始工作了。 我进一步建议在石英的mysql用法中应注意如果log_bin设置为on,则binlog_format应设置为MIXED