0

次のようなクエリを実行しています。

INSERT INTO `ABC` (
`col1`,
`col2`)
SELECT
`t`.`col1`,
`t`.`col2`
FROM (
SELECT
    `opr`.`col1`,
    @counter := IF(@var_2 = `opr`.`col_2`, @counter + 1, 1) AS `counter`,
    @val_2 := `opr`.`col2`
FROM 
    (...Some select ...) `opr`
) t

このクエリを SequelPro (SQL エディター) で実行すると、問題なく動作します。ただし、org.skife.jdbi を (@SqlUpdate として) 使用してこれを実行すると、ユーザー定義変数 @counter は常に 1 になり、間違った更新が生成されます。

さらに、この更新クエリをストアド プロシージャにワープしてみました: - SequelPro から SP を呼び出すと、正しい結果が得られます。- JDBI から SP を呼び出すと、間違った結果が返されます (@counter == 1)。

Java が実行している SQL クエリは正しい (Java が実行しているものを確認するために MySQL ログを調べた) が、明示的なクエリを呼び出すか、自分のクエリ。

アイデア?これは JDBC または org.skife.jdbi のバグですか?

4

1 に答える 1