2011-01-06 3 views
0

Итак, у меня есть база данных MySQL, настроенная на сервере Debian, и она отлично работает с клиентом phpMyAdmin. В настоящее время я работаю над проектом, чтобы написать сервер Java, который сможет использовать базу данных MySQL, которая уже находится на этом сервере через соединение JDBC. Я просмотрел множество руководств и документации, но все они, похоже, просто объясняют, как делать клиентский код, но мне еще предстоит выяснить, как даже успешно открыть соединение JDBC с сервером. Что касается меня, я считаю, что программа имеет правильные настройки драйверов, потому что это больше не сбой (я просто направляю Java Build Path моей программы в Connector/J, предоставленный MySQL). Насколько моя программа идет, это то, что он выглядит как ...Общая настройка JDBC

import java.sql.*; 

public class JDBCTest { 
    public static void main(String[] args) { 
     System.out.println("Started!"); 
     try { 
      DriverManager.registerDriver(new com.mysql.jdbc.Driver()); 
      System.out.println("Driver registered. Connecting..."); 
      Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/", "root", "password"); 
      System.out.println("Connected!"); 
      conn.close(); 
     } catch (SQLException e) { 
      System.out.println("Error!"); 
      e.printStackTrace(); 
     } 
    } 
} 

Это то, что напечатано ...

Started! 
Driver registered. Connecting... 

Это как будто DriverManager.getConnection (String) просто замирает там , Я уверен, что это проблема с сервером, потому что, когда я намеренно пропущу localhost или IP-адрес, программа вылетает в течение 20 секунд. Это просто висит там вечно.

Прошу прощения за эту стену, но мой последний вопрос в том, есть ли у кого-нибудь информация, что я должен сделать или установить на сервере, чтобы заставить это работать? Спасибо огромное!

+2

вы пытались добавить номер порта в строку подключения? –

+1

Проверьте историю входа, чтобы узнать, достигло ли соединение сервер. В Linux вы сделаете так: журналы регистрации Mysql можно включить, запустив сервер mysql с опцией --log = «log-file». /usr/bin/safe_mysqld --log = "/ var/lib/mysql/mysql.log" & Журнал Mysql будет регистрироваться внутри файла /var/lib/mysql/mysql.log. хвост этого файла, чтобы увидеть журналы. Чтобы увидеть только логин (журнал подключений), используйте следующую команду: grep Connect /var/lib/mysql/mysql.log – Koekiebox

ответ

2

Попробуйте следующее:

public class MySqlDemo { 

public static void main(String [] args) { 

     java.sql.Connection conn = null; 

     System.out.println("SQL Test"); 

     try { 
       Class.forName("com.mysql.jdbc.Driver").newInstance(); 
       conn = java.sql.DriverManager.getConnection(
         "jdbc:mysql://localhost:3306/test?user=root&password="); 

     } 
     catch (Exception e) { 
       System.out.println(e); 
       System.exit(0); 
       } 

     System.out.println("Connection established"); 
} 
+0

+1, потому что вы были первым, кто прокомментировал номер порта.:) –

+0

Эй, я попробовал ваш метод, и похоже, что он продвигается вперед. Теперь я получаю исключение «Соединение отказался», когда я запускаю эту вещь. Есть ли что-то, что я должен делать на сервере, например, разрешения? Если да, то где я смотрю или что мне делать. Я использую сервер с машины Debian, если это полезно. – Brian

+0

Убедитесь, что ваша служба mysql запущена и ее порт 3306. Ваше имя db верно. Имя пользователя и пароль верны. –

0
  1. Попробуйте поместить номер порта и схемы там
  2. Попробуйте войти в базу данных с помощью некоторых SQL-клиент, может быть SQL консоль
  3. Попробуйте другие драйверы, могут быть некоторые новые или, возможно, старше
1

Вы должны указать название схемы, к которой вы подключаетесь. Обычно добавляется порт.

Это соединение образец строка:

jdbc:mysql://repos.insttech.washington.edu:3306/johndoe?user=johndoe&password=jddb

3306 является портом и первый экземпляр JohnDoe это имя схемы. Второй экземпляр johndoe - это имя пользователя.

+0

+1 для обозначения схемы. –

0

Возможно, библиотека Connector/J пытается использовать именованный канал для подключения к серверу MySQL вместо использования TCP/IP, и по какой-либо причине именованный канал недоступен. Попробуйте указать номер порта.

Возможно, вы также захотите включить некоторые регистрации в конфигурации Connector/J, как описано here.

Смежные вопросы