ケトルでは、入力としていくつかの文字列XとYを指定して、変換で次のロジックを使用します。
[User Defined Java Expression] Generate ID
[Insert / Update] Update/Insert table set id = generatedId, name=X, company=Y where name = X; don't update the ID column
[Database Value Lookup]select id from table where name = X
アイデアは、テーブル内の既存のエントリを更新するか、新しいエントリを作成して、次のステップで対象の行のIDを取得することです(既存のエントリまたは新しく生成されたエントリの場合があります)。
これは、MySQL + MyISAMで実行すると正常に機能しますが、MySQL + InnoDBでは失敗し、他のすべてのパラメーターは同じです。行が2番目のステップに挿入されたばかりの場合、最後のステップは失敗しますが、データベースにすでに存在する行に対しては機能します。実際の挿入が行われる前に、接続が最後のステップのSELECTを実行しようとしているように見えます。MySQL設定ではすべてのパラメータがデフォルトに設定されています(MySQL 5.1と5.5は同じ動作を示します)。
だから私の質問は次のとおりです:ケトルやMySQLの関連パラメータは何ですか?これが期待どおりに機能することをどのように保証できますか?MyISAMに戻すことができません。