2010-02-03 63 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)); 
相關問題