J'utilise un serveur MySQL 5.1 et Hibernate 3.5.1 / JPA2 comme ORM. Tout semble correct jusqu'à ce que je supprime manuellement certaines tables. A partir de là, les tests unitaires échouent car Hibernate ne crée plus certaines tables. En changeant l'url jdbc de
url=jdbc:mysql://localhost:3306/dbjava?createDatabaseIfNotExist=true
à
url=jdbc:mysql://localhost:3306/dbjavanew?createDatabaseIfNotExist=true
résout le problème ... jusqu'à ce que j'effectue des suppressions de tables :-( Comme je vais utiliser MySQL pour la production, cela ne doit pas se produire du tout.
L'abandon de dbjava n'aide pas non plus. Avez-vous des suggestions ?
--- INFORMATIONS SUPPLÉMENTAIRES :
Ça devient vraiment fatigant. Depuis la console mysql :
mysql> use dbjava;
Database changed
mysql> show tables;
+---------------------+
| Tables_in_dbjava |
+---------------------+
| aa |
| ba |
| da |
| ea |
| hibernate_sequences |
| ia |
| ka |
| la |
+---------------------+
8 rows in set (0.00 sec)
mysql> create table `cA` (id integer not null, comment varchar(255), name varchar(255), id_d integer, id_f integer, primary key (id)) ENGINE=InnoDB;
ERROR 1050 (42S01): Table 'ca' already exists
Euh ? Pourquoi la table 'ca' existe-t-elle ?!?!? En fait, elle a déjà existé ... depuis, elle a été abandonnée, toute la base de données a été abandonnée plusieurs fois ... pourquoi existe-t-elle encore ?
Encore pire :
mysql> drop table cA;
mysql> ERROR 1051 (42S02): Unknown table 'ca'
Totalement confus ...
Cependant, je viens de me rendre compte de quelque chose : mes noms de table dans hibernate utilisent une notation en minuscules et en majuscules (camel case). mysql ne répond qu'en minuscules. Quelqu'un pourrait-il confirmer que mysql ne reconnaît pas la sensibilité à la casse en 2010 ? !?