2010-02-03 12 views
0

Lors de la configuration d'une connexion JDBC dans une application J2EE, devez-vous spécifier le nom du schéma en plus du nom de la base de données?JDBC MySQL; fournit le nom de DB et le nom d'utilisateur/mot de passe assez?

J'ai suivi ce tutorial et ai installé une base de données, et un nom d'utilisateur/mot de passe, mais je rencontre cette erreur quand je lance mon application. Est-il possible que DBUnit essaie d'insérer les données, avant que Hibernate ait initié et créé le schéma?

Caused by: org.dbunit.dataset.NoSuchTableException: Did not find table 'CLIENT' in schema 'null' 

Mes coordonnées de connexion sont les suivantes:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
     <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
     <property name="url" value="jdbc:mysql://127.0.0.1:3306/salestracker"/> 
     <property name="username" value="salestracker"/> 
     <property name="password" value="salestracker"/> 
    </bean> 

J'ai créé la base de données:

[[email protected] sales-tracker]$ mysql -u root -p 
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 16 
Server version: 5.1.42 Source distribution 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

mysql> show DATABASES; 
+--------------------+ 
| Database   | 
+--------------------+ 
| information_schema | 
| mysql    | 
| salestracker  | 
| test    | 
+--------------------+ 
4 rows in set (0.00 sec) 

Ai-je besoin de préciser quelque chose dans mon persistence.xml de veille prolongée qui dit " utiliser "une base de données particulière? Je supposais que cela serait implicite dans l'URL JDBC

+0

À l'intérieur de votre base de données 'salestracker' avez-vous une table' CLIENT'? –

+0

la base de données est vide, je l'ai en hibernate qui je crois devrait créer la structure de base de données pour moi: '<- Créer automatiquement le schéma SQL -> ' – Jimmy

+0

Parfois, hibernation a des problèmes pour générer le schéma, ce qu'il signale correctement dans les journaux. Vérifiez si la table est là et vérifiez les journaux – Bozho

Répondre

1

Connectez-vous à la base de données en tant que root et exécutez 'desc client' pour voir si la table est là (ou 'show tables'). S'il ne le trouve pas, Hibernate ne le crée pas automatiquement. S'il le trouve, essayez de vous connecter en tant que salestracker et faites la même chose pour voir si cet utilisateur n'a pas les permissions correctes. Si la table est vraiment là, l'étape suivante serait d'écrire un programme Java simple pour se connecter et interroger la table, c'est-à-dire supprimer Hibernate de l'équation. Quelque chose comme:

Class.forName("com.mysql.jdbc.Driver"); 
Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/salestracker", "salestracker", "salestracker"); 
PreparedStatement s = conn.prepareStatement("select count(*) from client"); 
ResultSet rs = s.executeQuery(); 
rs.next(); 
System.out.println(rs.getString(1)); 
Questions connexes