MySQL java.sql.SQLException
3 отговора
96 прегледа
MySQL java.sql.SQLException
Здравейте. Имам проблем със свързването на Java и МySQL под Линукс.
Ето кода.
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql:///test");
Изглежда съвсем стандартно. Но когато се опитах да го пусна под Линукс започна да дава грешка:
java.sql.SQLException: Unable to connect to any hosts due to exception: java.net.ConnectException: Connection refused at
com.mysql.jdbc.Connection.createNewIO(Connection.java:1564) at
com.mysql.jdbc.Connection.(Connection.java:485) at
com.mysql.jdbc.Driver.connect(Driver.java:341) at
java.sql.DriverManager.getConnection(DriverManager.java:512) at
java.sql.DriverManager.getConnection(DriverManager.java:171) at
org.apache.jsp.jdbc_jsp._jspService(jdbc_jsp.java:77) at
MySQL4, Java1.4, Debian, ConnectorJ 3.0.6
-----------------------------------------------------------
Това може би е проблем на конфигурацията на MySQL. Обаче нищо по-конкретно не успях да изровя.
- Елиминирал съм като възможност да е заради грешни име и парола.
- Сървъра е включен. Мога да се връзвам към него през конзолата му. netstat -a показва това
tcp 0 0 *:mysql *:* LISTEN
- skip_networking ми е OFF
- не е като да не намира jar-a на MySQL-driver.
- Под Вин няма такова поведение.
Ще съм благодарен на всякакви по-конкретни идеи.
Ето кода.
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql:///test");
Изглежда съвсем стандартно. Но когато се опитах да го пусна под Линукс започна да дава грешка:
java.sql.SQLException: Unable to connect to any hosts due to exception: java.net.ConnectException: Connection refused at
com.mysql.jdbc.Connection.createNewIO(Connection.java:1564) at
com.mysql.jdbc.Connection.(Connection.java:485) at
com.mysql.jdbc.Driver.connect(Driver.java:341) at
java.sql.DriverManager.getConnection(DriverManager.java:512) at
java.sql.DriverManager.getConnection(DriverManager.java:171) at
org.apache.jsp.jdbc_jsp._jspService(jdbc_jsp.java:77) at
MySQL4, Java1.4, Debian, ConnectorJ 3.0.6
-----------------------------------------------------------
Това може би е проблем на конфигурацията на MySQL. Обаче нищо по-конкретно не успях да изровя.
- Елиминирал съм като възможност да е заради грешни име и парола.
- Сървъра е включен. Мога да се връзвам към него през конзолата му. netstat -a показва това
tcp 0 0 *:mysql *:* LISTEN
- skip_networking ми е OFF
- не е като да не намира jar-a на MySQL-driver.
- Под Вин няма такова поведение.
Ще съм благодарен на всякакви по-конкретни идеи.
Re: MySQL ConnectException
Да добавя и че Дебиана е stable.
В един друг форум видях подобен въпрос. Там като насока беше дадено, че за да стане такава връзка е достатъчно включеният MySQL да може да бъде достигнат през телнет
telnet localhost 3306
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
Някой знае ли как се пуска това, или къде може да се прочете?
В един друг форум видях подобен въпрос. Там като насока беше дадено, че за да стане такава връзка е достатъчно включеният MySQL да може да бъде достигнат през телнет
telnet localhost 3306
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
Някой знае ли как се пуска това, или къде може да се прочете?
Re: ConnectException
Оказа се, че е било заради firewall-a. След намесата на Sysadmina вече не получавам тази грешка.
Обаче отново няма връзка с базата.
Communication link failure: java.io.IOException, underlying cause:
Unexpected end of input stream ** BEGIN NESTED EXCEPTION ** java.io.IOException MESSAGE: Unexpected end of input stream STACKTRACE: java.io.IOException: Unexpected end of input stream at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:1096) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:387) at com.mysql.jdbc.Connection.createNewIO(Connection.java:1562) at com.mysql.jdbc.Connection.(Connection.java:491) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:346) at java.sql.DriverManager.getConnection(DriverManager.java:512) at java.sql.DriverManager.getConnection(DriverManager.java:171) at org.apache.jsp.jdbc_jsp._jspService(jdbc_jsp.java:83) at
....................
Обаче отново няма връзка с базата.
Communication link failure: java.io.IOException, underlying cause:
Unexpected end of input stream ** BEGIN NESTED EXCEPTION ** java.io.IOException MESSAGE: Unexpected end of input stream STACKTRACE: java.io.IOException: Unexpected end of input stream at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:1096) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:387) at com.mysql.jdbc.Connection.createNewIO(Connection.java:1562) at com.mysql.jdbc.Connection.(Connection.java:491) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:346) at java.sql.DriverManager.getConnection(DriverManager.java:512) at java.sql.DriverManager.getConnection(DriverManager.java:171) at org.apache.jsp.jdbc_jsp._jspService(jdbc_jsp.java:83) at
....................
Solution
За да работи това трябва да работи и
telnet localhost 3306
а за него трябва да се провери дали хостът от, който се прави връзка не е забранен в /etc/hosts; hosts.deny; hosts.allow
Статуса може да се провери със следната команда:
/usr/sbin/tcpdmatch mysqld [IP-to/hostname na klienta]
Примерен отговор:
warning: mysqld: no such process name in /etc/inetd.conf
client: address [client IP]
server: process mysqld
matched: /etc/hosts.deny line 3
access: denied
т.е. в hosts.deny трябва да се напише:
ALL: ALL EXCEPT 127.0.0.1
Изрових го най-накрая.
telnet localhost 3306
а за него трябва да се провери дали хостът от, който се прави връзка не е забранен в /etc/hosts; hosts.deny; hosts.allow
Статуса може да се провери със следната команда:
/usr/sbin/tcpdmatch mysqld [IP-to/hostname na klienta]
Примерен отговор:
warning: mysqld: no such process name in /etc/inetd.conf
client: address [client IP]
server: process mysqld
matched: /etc/hosts.deny line 3
access: denied
т.е. в hosts.deny трябва да се напише:
ALL: ALL EXCEPT 127.0.0.1
Изрових го най-накрая.