Bug #66619 'READ-COMMITTED' in InnoDB not allowed with STATEMENT binlog ever
Submitted: 30 Aug 2012 17:23 Modified: 31 Aug 2012 5:46
Reporter: Sheeri Cabral (Candidate Quality Contributor) Email Updates:
Status: Not a Bug Impact on me:
None 
Category:MySQL Server Severity:S3 (Non-critical)
Version:5.1.63 OS:Any
Assigned to: CPU Architecture:Any

[30 Aug 2012 17:23] Sheeri Cabral
Description:
The manual at http://dev.mysql.com/doc/refman/5.1/en/set-transaction.html#isolevel_read-committed says:

"As of MySQL 5.1, if you use READ COMMITTED or enable innodb_locks_unsafe_for_binlog, you must use row-based binary logging. "

However, I am using MySQL version 5.1.63 and I can't use READ-COMMITTED with STATEMENT-based binary logging even when innodb_locks_unsafe_for_binlog is disabled.

How to repeat:
mysql> show variables like '%unsafe_for%';
+--------------------------------+-------+
| Variable_name                  | Value |
+--------------------------------+-------+
| innodb_locks_unsafe_for_binlog | OFF   |
+--------------------------------+-------+
1 row in set (0.00 sec)

mysql> SET GLOBAL tx_isolation='READ-COMMITTED';
Query OK, 0 rows affected (0.00 sec)

We saw errors from our app like this:
DBD::mysql::db do failed: Binary logging not possible. Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'

There's nothing in the error log (but the error log is enabled and otherwise working).

We changed the tx_isolation back to REPEATABLE-READ and all is well.
[30 Aug 2012 22:20] MySQL Verification Team
I'm not sure what is confusing about this:

"As of MySQL 5.1, if you use READ COMMITTED or enable innodb_locks_unsafe_for_binlog, you must use row-based binary logging".

You use READ COMMITTED, therefore must use binlog_format=ROW. 
I don't see any bug here..?
[30 Aug 2012 23:46] Sheeri Cabral
My apologies! I thought it said AND, not "or". 

You can mark this invalid.