2010-02-03 61 views
0

在J2EE应用程序中设置JDBC连接时,除了数据库名称之外,是否还需要指定模式名称?JDBC MySQL;足够提供数据库名称和用户名/密码?

我跟着这个tutorial并设置了数据库和用户名/密码,但是当我启动我的应用程序时,我遇到了这个错误。在hibernate启动并创建模式之前,DBUnit是否有可能试图插入数据?

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

我的连接详情如下:

<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> 

我已经建立了数据库:

[[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) 

我需要指定我的休眠的persistence.xml的东西,以“说使用“一个特定的数据库?我假设这将隐含在JDBC URL中

+0

在你的'salestracker'数据库里面你有一个CLIENT表吗? – 2010-02-03 20:12:03

+0

数据库是空的,我有这在hibernate中,我相信应该为我创建数据库结构:'<! - 自动创建SQL模式 - > ' – Jimmy 2010-02-03 20:13:03

+0

有时候hibernate会在生成模式时遇到问题,它会在日志中正确报告。检查表是否在那里,然后检查日志 – Bozho 2010-02-04 07:22:03

回答

1

以root身份连接到数据库并运行'desc client'来查看表是否存在(或'show tables')。如果它没有找到它,那么Hibernate不会自动创建它。如果它找到它,请尝试连接作为salestracker并做同样的事情,看看可能该用户没有正确的权限。如果表格确实存在,下一步就是编写一个简单的Java程序来连接和查询表格,即从等式中删除Hibernate。例如:

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)); 
相关问题