Commit() e Rollback() em MySQL

Olá a todos, estou com problemas em implementar estes dois métodos na minha transação.
O programa tem estas linhas:

[color=green]conexao = DriverManager.getConnection(Inicio.url, Inicio.usuario, Inicio.senha);// conexão é global
conexao.setAutoCommit(false);
PreparedStatement sql = conexao.prepareStatement("")[/color] (a query)

Existem também mais 3 PreparedStatement (“sq1”,“sql2”…), todos nesta mesma conexao

no final coloquei o seguinte:

[color=green]sql.executeUpdate();
sql1.executeUpdate();
sql2.executeUpdate();
sql3.executeUpdate();

conexao.commit();
conexao.setAutoCommit(true);[/color]

No caso de erro implemento no [color=darkred]catch [/color] conexao.rollback(); (Que precisa estar entre try e catch)

No entanto isto não funciona(compila, e não dá erro de execução) pois como teste altero uma das query mas as anteriores são gravadas no banco.

Existe algum erro lógico ou está mal implementado, ou pode ser problema do MySQL que não suporta commit e rollback?(Versão mysql-3.23.38)

Obrigado, Romeo

mysql suporta transações apenas com tabelas transacionais, como InnoDB, se qualquer alteração da tua transação tocar em uma tabela que não seja, o mysql reverte pra auto-commit.

Qual seria a solução então?
Ou não existe e preciso mudar o método de fazer a transação, qual seria a API?

Se suas tabelas são do tipo MYISAM , MYISAM não suporta commit e nem rollback o que vc pode fazer é transformar essas tabelas para InnoDB


ALTER TABLE tabela TYPE = InnoDB

O MySQL admin deu o seguinte erro

Cannot initialize InnoDB as ‘innodb_data_file_path’ is not set.

tem q baixar esse path ou configurar?
E como se faz isso?