Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Java и MySQL


Автор: aliks 23.4.2009, 08:36
Подключаюсь к MySQL из Java

Код

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
import org.jdesktop.application.Action;
import org.jdesktop.application.ResourceMap;
import org.jdesktop.application.SingleFrameApplication;
import org.jdesktop.application.FrameView;
import org.jdesktop.application.Task;
import org.jdesktop.application.TaskMonitor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//import java.sql.Connection;
import java.io.UnsupportedEncodingException;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.Timer;
import javax.swing.Icon;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

        Connection connection = null;
        try {
            // Load the JDBC driver
            String driverName = "com.mysql.jdbc.Driver";
            //String driverName = "org.gjt.mm.mysql.Driver";
            Class.forName(driverName);
            
            //Точка 1
            JOptionPane.showMessageDialog(null, "1");

            String serverName = "192.168.0.6";
            String mydatabase = "krimsekt";
            String url = "jdbc:mysql://" + serverName +  "/" + mydatabase+"?useUnicode=true&characterEncoding=latin1"; // a JDBC url
            String username = "user";
            String password = "secret";
            connection = (Connection) DriverManager.getConnection(url, username, password);

            //Точка 2
            JOptionPane.showMessageDialog(null, "2");


        } catch (ClassNotFoundException eq) {
            // Could not find the database driver
        } catch (SQLException ea) {
            JOptionPane.showMessageDialog(null, ea.getMessage());
        }


На моем копме все работает ок, получаю результат от сервер, вывожу в таблицу.

Запускаю тоже самое на других компьютерах. Проходит точка 1, а на подключении долго висит, в конце концов выскакивает исключение

Communication link failure.
Last packet was sent to the server 0ms ago

Что это значит и как с ним бороться?

Автор: ecologist 23.4.2009, 08:51
Проверить:

1. Пингуется ли удаленный хост
2. Как установлен MySQL - у него по-моему есть настройка, что он не принимает удаленный запросы - только с локальной машины.
Просто набрать 

telnet <ip> <port>

Если же телнет добирается, то даже не знаю, что и подумать. Но подозреваю, что не доберется.

Автор: aliks 23.4.2009, 09:31
Удаленный хост пингуется и телнет добирается...MySQL установлен на отдельной машине

Автор: Platon 23.4.2009, 09:34
ecologist, правильно подметил второй пункт. Надо поставить галочку в настройках MySQL "принимать удаленные запросы".

Автор: aliks 23.4.2009, 09:38
Так удаленные запросы принимаются с других машин и из других программ. Сервер НЕ стоит на машине на которой все ОК. Он вообще стоит на отдельно стоящей машине. К той же базе и к той же таблице, я успешно подключаюсь из программы написанной на делфях

Автор: goodday1941 23.4.2009, 10:02
у Вас в подключении порт не указан, может там собака зарыта?

Автор: aliks 23.4.2009, 10:08
Подскажите пожалуйста, как правильно его указать

Автор: _and 23.4.2009, 10:16
типа так
Код

String serverName = "192.168.0.6";
String port = "3306" // по умолчания для MySQL
String mydatabase = "krimsekt";
String url = "jdbc:mysql://" + serverName + ":"+ port + "/" + mydatabase+"?useUnicode=true&characterEncoding=latin1"; // a JDBC url

Автор: aliks 23.4.2009, 10:23
Хм.....без результатно.... smile 

Автор: _and 23.4.2009, 10:37
помотри http://ubuntuforums.org/archive/index.php/t-897729.html
похоже то же самое что и у тебя
какой версией коннектора пользуешься и какая версия БД

Автор: aliks 23.4.2009, 10:45
Версия сервака: 5.045-6.0.12
Версия коннектора: mysql-connector-java-5.1.6-bin.jar

Два отличия "хорошей" и "плохой машины"

Хорошая: стоит NetBeans + jdk 1.6.0.11
Плохая: jre 1.6.0.6

Автор: _and 23.4.2009, 11:09
попробуй указать в урл параметр autoReconnect=true
т.е.
Код

String url = "jdbc:mysql://" + serverName + ":"+ port + "/" + mydatabase+"?useUnicode=true&characterEncoding=latin1&autoReconnect=true"; // a JDBC url

Автор: aliks 23.4.2009, 11:19
Не помогло  smile 

Автор: garbuz 23.4.2009, 11:54
Может в файрволе дело?

Автор: aliks 23.4.2009, 12:04
Его то первым делом отключил smile 

Попробовал еще одну машину - тоже не работает, вообще ничего не понимаю

Автор: goodday1941 23.4.2009, 12:24
гм.. а может порт не 3306? )

Автор: aliks 23.4.2009, 12:28
уже перепроверял - он

Автор: garbuz 23.4.2009, 13:05
Можно попробывать драйвер заменить, можно попробывать через JNDI законнектиться.

Автор: aliks 23.4.2009, 13:19
А примерчиком не поможете?

Автор: math64 23.4.2009, 13:25
а утилита mysql (в кататоле mysql/bin) с "плохой" машины соединеняется с базой?

Автор: aliks 23.4.2009, 13:46
Цитата(math64 @  23.4.2009,  13:25 Найти цитируемый пост)
а утилита mysql (в кататоле mysql/bin) с "плохой" машины соединеняется с базой? 


При помощи Графического MySQL Administrator я соединился без проблем

Автор: math64 23.4.2009, 14:24
где лежит mysql-connector-java-X.X.X-bin.jar ? Есть ли на машине другие версии этого файла?

Автор: aliks 23.4.2009, 14:36
Диск С:
       Файл Jar - основной
       Папка lib -  в ней лежит mysql-connector-java-X.X.X-bin.jar


Class-Path: lib/appframework-1.0.3.jar lib/swing-worker-1.1.jar lib/my
 sql-connector-java-5.1.6-bin.jar


Другие версии этого файла не найдены

Автор: aliks 24.4.2009, 08:59
Да....получается танцы с бубнами. Свеже-установленная машина с XP в сети, ставлю JRE - все работает ОК. Даже интересно, в чем дело, буду копать 

Автор: math64 24.4.2009, 09:11
А не делались ли на "плохой" машине обновления JRE (без удаления старого)?

Автор: aliks 24.4.2009, 09:19
Кажись делалось

Однако, все что присутствовали в системе JRE снес и переустановил заново, результат не дали

Автор: aliks 25.5.2009, 15:53
Побегал по гуглу по своей проблеме и случайно наткнулся на такой совет, что необходимо в IE прописать в исключениях для прокси адрес MySQL сервера. 

Сделал - помогло!!!

Не вижу связи, проясните!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)