环境
tomcat 6.x
jdk 1.6
mysql5.5
异常
执行jdbc查询时抛出异常:
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.
原因及解决方案
This is required by MySQL:
Statement based binlogging does not work in isolation level
READ UNCOMMITTED and READ COMMITTED since the necessary
locks cannot be taken.
根据tomcat抛异常,提示是事务级别在read committed和read uncommitted的时候binlog必须设置为row格式。
这个是java设置的一个局限性,java默认的事务级别是read committed,而mysql默认设置的binlog_format=statement。
将binlog_format设置为mixed
set global binlog_format=mixed;
过段时间,异常仍在!
设置成row
set global binlog_format=row;
问题解决!
或:
mysql> SET SESSION binlog_format = 'ROW';
mysql> SET GLOBAL binlog_format = 'ROW';
注意: 若手动修改linux下面/etc/my.cnf : binlog_format = row , 需要重启mysql。
相关推荐
MySQL的二进制日志(binlog)是数据库复制的重要组成部分,它记录了所有改变数据库状态的事务。`binlog_format` 参数定义了binlog的记录方式,有三种模式:STATEMENT、ROW和MIXED。 1. **STATEMENT模式(SBR)** -...
MySQL的二进制日志(binlog)是数据库系统中至关重要的组件,它记录了所有对MySQL数据库进行的改变操作,包括表结构的修改(如CREATE、ALTER TABLE等)和表数据的更新(INSERT、UPDATE、DELETE等)。binlog不记录...
### MySQL Binlog 的三种模式详解 #### 一、引言 在MySQL数据库系统中,Binlog(Binary Log)是至关重要的日志记录机制之一,它主要用于记录所有改变数据的SQL语句,对于实现主从复制、数据恢复等功能具有不可替代...
binlog_format = mixed log-bin = /data/mysql/logs/mysql-bin.log expire_logs_days = 7 max_binlog_size = 100m binlog_cache_size = 4m max_binlog_cache_size = 512m ``` 这些配置分别设置了日志格式、日志路径...
MySQL binlog包含了多种事件类型,如QUERY、ROTATE、FORMAT_DESCRIPTION等。通过选择感兴趣的SQL类型,我们可以专注于我们需要的数据操作,例如只处理DDL(Data Definition Language)或DML事件。 Python作为解释型...
在MySQL中,"Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT" 是一个常见的警告信息,它涉及到MySQL的二进制日志(Binary Log)和复制(Replication)机制。...
本篇文章将深入探讨如何查看和解析MySQL的binlog文件,特别是针对两种不同的binlog_format模式——ROW和STATEMENT,以及与GTID(Global Transaction Identifier)的配合使用。 首先,我们可以使用`show master ...
是否记录 update 语句到binlog依赖于 binlog_format 的设置。具体情况 实践出真知。 二 测试 2.1 binlog_format 为 ROW 模式 2.2 binlog_format 为 STATEMENT 模式 解析binlog内容,完整的记录了update语句。 ...
MySQL二进制日志(Binary Log,简称binlog)是MySQL数据库系统中记录所有更改数据库数据的事件序列的重要工具,主要用于数据恢复、主从复制等场景。本篇将深入探讨如何利用Python语言来解析和转换MySQL的binlog,...
这里的`server-id`用于区分不同的MySQL实例,`log_bin`指定了binlog日志的存储路径,`max_binlog_size`设定了单个binlog文件的最大大小,`binlog_format = row`表示采用行格式的binlog,这对于数据恢复更为精确。...
1.在没有特殊说明的情况下,默认binlog_format=STATEMENT,由于binlog_format=ROW/MIXED模式下,RAND()函数以行格
这通常涉及到设置my.cnf配置文件,开启binlog功能,并设定合适的binlog_format(如ROW、STATEMENT或MIXED),以及binlog_row_image(FULL、MINIMAL或NO)。此外,还需要设置合适的binlog_size,以控制单个binlog文件...
py-mysql-es mysql binlog同步到elasticsearch 安装 pip install yaml ...binlog-format = row MySQL用户权限 CREATE USER es IDENTIFIED BY 'es'; GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT
- `binlog_format`: 日志格式,一般推荐`ROW`模式以支持PXC的行级复制。 - `gtid_mode`: 设置全局事务ID模式,对于PXC应启用(如`ON`或`ENFORCED`)。 6. **安全与监控**: - `bind-address`: MySQL服务器监听的...
binlog的存储位置和文件名可以通过配置参数`expire_logs_days`和`binlog_format`来设定,前者定义了binlog的过期时间,后者设置了binlog的记录格式。 **1.3 内容纲要** 本文档将涵盖以下主题: - **查看日志**:...
MySQL binlog记录的所有操作实际上都有对应的事件类型的,譬如STATEMENT格式中的DML操作对应的是QUERY_EVENT类型,ROW格式下的DML操作对应的是ROWS_EVENT类型。 ...fix Format_description_event:
* 在服务器A和服务器B上分别修改配置文件my.ini,添加server-id、log-bin、sync_binlog、binlog_format、auto_increment_increment、auto_increment_offset、max_binlog_size、expire_logs_days、binlog_do_db、...
log_bin_basename | MySQL 的 binlog 日志的基础名称(前缀) log_bin_index | binlog 的索引文件,里面记录了当前服务器关联的 binlog 文件有哪些。 二进制日志格式 MySQL 服务器中提供了多种格式来记录二进制...