121214 11:54:30 [Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statements writing to a table with an auto-increment column after selecting from another table are unsafe because the order in which rows are retrieved determines what (if any) rows will be written. This order cannot be predicted and may differ on master and the slave. Statement: update db_ds_pax p
set p.mbp_id = 8861912, updated_ts = now()
where p.flight_id = 2506912
and p.logically_deleted = 0
and (
exists (
select * from db_bkg_passenger bkgp
where bkgp.bkg_pax_id = p.bkg_pax_id
and bkgp.ticket_num = '2202326623256'
and bkgp.logically_deleted = 0 )
or exists (
select * from db_dcs_pax dcsp
where dcsp.dcs_pax_id = p.dcs_pax_id
and dcsp.ticket_num = '2202326623256'
and dcsp.logically_deleted = 0 ))
这个声明中有什么不安全的?我没有插入任何东西,只是在更新。实际上,我什至没有选择任何将用于更新的东西。
我曾尝试使用左连接重写,但它仍然抱怨。我还认为可能updated_ts = now()
是罪魁祸首并将其设置为固定时间,但仍然是相同的警告。
服务器是Oracle的5.5.27