I got the following warning running the simple statement and I was curious as to why I got it:
UPDATE `Table1`
SET `City`='Miami',
`ExpDate`='201227',
`User`='JDoe',
`UpdDate`='2015-02-17 16:11:25'
WHERE `id` = 61`
Here is the Table1
structure:
CREATE TABLE `Table1` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`User` varchar(10) COLLATE utf8_bin DEFAULT NULL,
`City` varchar(25) COLLATE utf8_bin DEFAULT NULL,
`ExpDate` varchar(10) COLLATE utf8_bin DEFAULT NULL,
`UpdDate` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `Unique_Index` (`User`,`City`),
UNIQUE KEY `id` (`id`),
KEY `ALT1_IDX_Table1` (`User`,`City`)
) ENGINE=InnoDB AUTO_INCREMENT=64 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Full Error from log:
2015-02-17 16:10:08 1548 [Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly. Statement: UPDATE
Table1
SET
City='Miami',
ExpDate='201227',
User='JDoe',
UpdDate='2015-02-17 16:11:25'
WHERE
id= 61
Finally, the error show exactly what's wrong here.
Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column
The error is not in the table itself, the error is in a trigger or procedure that fires when this table get's updated.