最近、MySQL のバージョンを 5.6.10 (Linux のコミュニティ エディション) にアップグレードしました。その後、MySQL ODBC ドライバー 3.5.1 経由で MySQL 5.0.24a と正常に通信する Crystal Report を正しく実行できません。
レポートは SQL コマンドから作成されており、手動でクエリと日付 ala 2013-05-15 を MySQL クライアントに入力すると正常に動作しますが、パラメータを ODBC 経由で渡すと (クエリの日付を { として再フォーマットします) d '2013-05-15'} MySQL はランダムな結果を返します。つまり、ある実行では負の値のない結果が返され、別の実行では負の値だけが返され、別の実行では結果が返されません。実際に完全なレポートを取得する場合もあります。しかし、それは予測できません。
特に日付パラメーターに絞り込みましたが、Crystal Reports 2011 と MySQL ODBC 5.2 の両方にアップグレードした後、問題は解決しません。「日付」パラメーターを「文字列」パラメーターに変更することで回避しましたが、それは理想的ではありません。
MySQL 5.6.10 サーバーの他のすべては正常に動作しているように見えます。ODBC の処理方法に関して 5.0 と 5.6 の間で変更があったかどうかをまだ判断しようとしていますが、これまでのところ、うまくいきませんでした。なぜこれがとても奇妙に振る舞っているのか。
関連するパラメーターを含むクエリの一部を次に示します...
select sql_no_cache
if(CCT.creditCardTypeName is not null, CCT.creditCardTypeName, if(OPBML.orderPaymentBMLID is not null, 'Bill Me Later', 'Cash/Check')) as theType,
'orderPayment ' as source,
date_format(OP.authorizationDate, '%Y-%m-%d') as theDate,
if (OPC.checkNumber is not null, OPC.checkNumber, '') as checkNum,
if (OPWT.wireTransferDate is not null, OPWT.wireTransferNumber, '') as wtNum,
concat(C.lastName, ', ', C.firstName) as custName,
O.orderNumber,
OP.amount
from
orders O
inner join orderPayment OP on (O.ordersID=OP.ordersID)
inner join paymentMethod PM on (PM.paymentMethodID=OP.paymentMethodID)
inner join customer C on (C.customerID=O.customerID)
inner join partner P on (C.partnerID = P.partnerID and P.businessUnit = {?businessUnit})
left outer join orderPaymentBML OPBML on (OP.orderPaymentID=OPBML.orderPaymentID)
left outer join orderPaymentCheck OPC on (OP.orderPaymentID=OPC.orderPaymentID)
left outer join orderPaymentCreditCard OPCC on (OP.orderPaymentID=OPCC.orderPaymentID)
left outer join orderPaymentWireTransfer OPWT on (OP.orderPaymentID=OPWT.orderPaymentID)
left outer join creditCardType CCT on (CCT.creditCardTypeID=OPCC.creditCardTypeID)
where
OP.authorizationDate between date_add({?date},INTERVAL "3:0:01" HOUR_SECOND) and
date_add( date_add({?date}, INTERVAL 1 DAY), INTERVAL "3:0:00" HOUR_SECOND) and
PM.paymentMethodAbbreviation in ('BM', 'CC', 'CH', 'WT')
ありがとう、 --SJ