2010-07-10 9 views
0

Je cours un serveur MySQL 5.1 et Hibernate 3.5.1/JPA2 pour ORM. Everthing semble bien jusqu'à ce que je lâche quelques tables manuellement. Dès lors, les tests unitaires échouent avec Hibernate ne créant plus certaines tables. Modification du cela ne doit pas url jdbc deHibernate 3.5.1, JPA2.0 et MySQL - Comportement alternatif dans les 2 db diff/même serveur

url=jdbc:mysql://localhost:3306/dbjava?createDatabaseIfNotExist=true 

à

url=jdbc:mysql://localhost:3306/dbjavanew?createDatabaseIfNotExist=true 

résout le problème ... jusqu'à ce que je laisse tomber la table exécute certaines :-(Comme je vais utiliser MySQL pour la production, se produire à . tous

Dropping dbjava n'aide pas trop toutes les suggestions

--- PLUS D'INFO:.?

Ça devient vraiment fatigué. À partir de 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 

Uh? Pourquoi Table 'ca' existe-t-il?!?!? En fait, il a existé ... depuis lors, il a été abandonné, tout le db a été abandonné plusieurs fois ... pourquoi existe-t-il encore?

Pire encore:

mysql> drop table cA; 
mysql> ERROR 1051 (42S02): Unknown table 'ca' 

totalement confus ...

Cependant, je viens de réaliser quelque chose: mes noms de table en veille prolongée utilisent la notation majuscules et minuscules (cas de chameau). Réponses mysql en minuscules seulement. Quelqu'un pourrait-il confirmer que mysql ne reconnaît pas la sensibilité à la casse en 2010?!?

+1

Vous pouvez exécuter mysqlcheck sur votre base de données et/ou vérifier les journaux de service à la recherche de corruption. – mindas

+0

Je viens de faire ... tout ok :-( –

+0

Cochez cette http://dev.mysql.com/doc/refman/5.1/fr/identifier-case-sensitivity.html – mindas

Répondre

1

Quel dialecte utilisez-vous? Les nouvelles versions d'Hibernate (je ne me souviens plus des nombres exacts) ont le correctif InnoDB: au lieu de type=InnoDb, il utilise engine=InnoDb lors de la création de tables - ce qui est la seule syntaxe légitime dans MySQL 5.1. Juste pour rappeler, MySQL 5.0 a accepté les mots-clés type et engine.

+0

C'était une bonne suggestion, cependant, il n'a pas aidé.J'ai ajouté au gestionnaire d'entité appcontext.xml et au contexte de la persistence Cependant, s'il vous plaît, attention aux informations supplémentaires que je donnerai dans les 5 minutes en éditant ma question originale –

+0

Si Hibernate pouvait créer les tables la première fois, je ne vois pas comment le dialecte pourrait être coupable. –