JDBC MySQL; достаточно ли указать имя БД и имя пользователя / пароль? - PullRequest
0 голосов
/ 03 февраля 2010

При настройке соединения JDBC в приложении J2EE, необходимо ли указывать имя схемы в дополнение к имени базы данных?

Я следовал этому учебнику и настроил базу данных и имя пользователя / пароль, но я сталкиваюсь с этой ошибкой при запуске приложения. Возможно ли, что DBUnit пытается вставить данные до того, как hibernate инициирует и создает схему?

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, которое говорит "использовать" определенную базу данных? Я предполагал, что это будет подразумеваться в URL JDBC

1 Ответ

1 голос
/ 04 февраля 2010

Подключитесь к базе данных как 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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...