# Java > Gnral Java > Persistance des donnes >  [JSF-Mysql] Problme de rollback et d'autocommit sous Linux

## babylon5

Bonjour  tous,

J'ai un problme de rollback: j'ai deux entits client et adresse avec une relation unidirectionnelle de client vers adresse (relation oneToMany). 

J'ai trois table:
- client
- adresse
- client_adresse: cette dernire fait la liason entre les deux tables cit plus haut.

Lorsque j'ajoute un client avec une adresse et que j'ai un problme de transaction (voulue car deux client identique), une entr n'est pas ajout ni dans la table client ni dans la table client_adresse. Par contre une entre est ajout dans la table adresse. Il n'y a pas de rollback complet et il semble donc qu'il y ait un autocommit.

Je n'arrive pas  trouver la cause de ce problme.
A noter : il n'y a pas ce problme avec le mme code et les mmes fichiers de conf  ( part la conf jndi du au driver mysql) chez un developpeur sous Windows (je suis sous Linux). J'envisage donc que ce problme est li  mon Mysql ?? Mais je n'arrive pas  le rsoudre.


Ci dessous quelques fichiers de configurations de mon application:

Fichier persistence.xml:


```

```

Fichier sun-ressources.xml:


```

```

Depuis phpMyAdmin, j'ai accs en lecture aux variable du serveur Mysql.
A noter la variable autocmmit est  ON (comme sous l'user windows avec qui il n'y a pas de problme de rollback. Je n'arrive pas  la passer  OFF, mais je doute donc que ce soit la cause du problme.


```

```

Je peut poster tout code  ou toute configurations supplmentaire.
Merci d'avance pour votre aide

----------


## babylon5

Pas d'ide?

----------


## vhalalla

Bonjour,

Par hasard, votre base n'utiliserait pas Myisam, alors que l'autre dveloppeur utiliserait bien Innodb? Pour rappel, Myisam ne supporte pas les transactions.

----------


## babylon5

Merci pour ta rponse.
Effectivement mon moteur de stockage par dfaut est en  Myisam (et non en innodb), ce qui expliquerait mon problme. Pour les utilisateurs windows, je vais me renseigner. Sais tu comment mettre le moteur de stockage par dfaut en inndb sous Linux (j'ai sous la main mysql et  phpMyAdmin). Merci d'avance.

Une fois le server glassfish lanc et les tables recre je peut modifier manuellement le moteur de stockage en inndb et effectivement je n'ai plus ce problme, les transactions tant support!. Par contre je ne sais pas trop comment mettre ce moteur de stokage par dfaut ( chaque fois que le server est relanc, les tables sont recre et sont par dfaut en Myisam), depuis mon projet JEE ? depuis phpMyAdmin? depuisMysql? 
Merci d'avance

ps: j'ai tent de modifier le fichier perstence.xml (j'utilise JPA 2.0 avec eclipseLink) mais sans rsultat positif (j'ai toujours du Myisam qui est gnr automatiquement): 


```

```

J'ai rajout:


```
<property name="eclipselink.ddl-generation.table-creation-suffix" value="engine=InnoDB" />
```



EDIT: rsolu en ditant le fichier et en ajoutant le code ci dessous dans la partie [mysqld] du fichier /etc/my.cnf 


```
default-table-type=innodb
```

Pour toute table le mode de stockage passe en innodb. Par contre je ne comprend pas pourquoi via eclipselink, je n'arrive pas  paramtrer le type de mode de stockage...

----------

