在J2EE应用程序中设置JDBC连接时,除了数据库名称之外,是否还需要指定模式名称?
我已经关注了这个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>
我已经创建了数据库:
[james@nevada 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)
我是否需要在 hibernate persistence.xml 中指定“使用”特定数据库的内容?我假设这会隐含在 JDBC URL 中
最佳答案
以 root 身份连接到数据库并运行“desc client”以查看该表是否存在(或“显示表”)。如果没有找到它,那么 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));
关于java - 数据库连接MySQL;提供数据库名称和用户名/密码就足够了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2195067/