MySQL8.0

peque
Antal: 918
Tilmeldt:
20-04-2005
User is offline
MySQL8.0

Hej Gruppe.
Jeg er ved at bygge mig en VPN Gateway server til Mit arbejde, Men er rendt ind i et sjovt problem.
Jeg har programmeret mit site i JSP - med en MySQL Database til.

Fordi der er CTE inkluderet i MySQL8.0+ har vi valgt at opgradere - men nu kan jeg slet ikke få mit site til at bruge min MySQL Database.

System: Debian9
MySQL: 8.0.11 (Tidligere 5.7.20)

Det mest frustrerende er hvilkernb fejl jeg får i resins jvmlog:

Could not create connection to database server. Attempted reconnect 3 times. Giving up.
Could not create connection to database server. Attempted reconnect 3 times. Giving up.
null

Selve brugeren jeg har lavet i JSP/mysql er testet flere gange - kan sagtens logge ind og har de rigtige rettigheder. Miot umiddelbare bud er det er JDBC driveren der driller
Heldighvis(troede jeg ) var MySQL udkommet med en JDBC connecter som deb package --> mysql-connector-java_8.0.11-1debian9_all.deb
Denne er installeret - men jeg kan simpelthen ikke få det til at spille - og konstant får jeg samme fejl som vist ovenover.

Jeg har testet og lagt *.jar filen både i Resin lib - men også sitet WEB-INF/lib - Men uanset hvad - så fejler det

Her er min MySQL Driver jeg har lavet i sin tid - denne er tilrettet efter de nye Paths:

package x.web;
import java.sql.*;
public class XMySQL {

        private static Statement  statement;
        private static Connection connection;

        private String host = "";
private String database = "";
        private String user     = "";
        private String password = "";
        public XMySQL() {
                final String MYSQL_DRIVER = "com.mysql.cj.jdbc.Driver";

                try {
                        Class.forName(MYSQL_DRIVER).newInstance();
                } catch (Exception e) {
                System.err.println(e.getMessage());
                }
        }
public String getHost() {
        return host;
    }
    public void setHost(String host) {
        this.host = host;
    }
    public String getDatabase() {
        return database;
    }
    public void setDatabase(String database) {
        this.database = database;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getUser() {
        return user;
    }
    public void setUser(String user) {
        this.user = user;
    }
        public void open() {
            final String MYSQL_DB  = "jdbc:mysql://" + host + "/" + database + "?autoReconnect=true&useSSL=false";
            try {
                        connection = DriverManager.getConnection(
                                MYSQL_DB, user, password
                );

                if ( connection != null ) {
                connection.setAutoCommit(false);
                statement = connection.createStatement();
                }
                } catch (Exception e) {
                System.err.println(e.getMessage());
                }
        }
        public void open(String ho, String db, String user, String pass) {
           this.host   = ho;
this.database = db;
                this.user     = user;
                this.password = pass;
                open();
        }
        public ResultSet select(String query) {

                ResultSet results = null;
                try {
                results = statement.executeQuery(query);
        } catch (Exception e) {
                System.err.println(e.getMessage());
        }
        return results;
        }
        public void execute(String command) {

                try {
                        statement.executeUpdate(command);
                        connection.commit();
        } catch (Exception e) {
                System.err.println(e.getMessage());
                try {
                connection.rollback();
                } catch (Exception x) {
                        System.err.println(x.getMessage());
                }
                }
        }
        public boolean close()  {                                       // Lukker forbindelse
                boolean result = false;
            try {
                        if ( connection != null ) {
                        statement.close();                              // Luk statement
                        connection.close();                             // Luk forbindelse
                        result = true;                                  // Lukket
                }
        } catch (Exception e) {
                e.printStackTrace();
        }
        return result;
        }
}

Er der nogen der kan fortælle mig hvor det går galt her - siden den ikke vil logge ind mere


Looop
Looop's picture
Antal: 1062
Tilmeldt:
30-10-2008
User is offline
Har du proevet at pinge din

Har du proevet at pinge din DB?

./looop


peque
Antal: 918
Tilmeldt:
20-04-2005
User is offline
Ja det er localhost! svarer

Ja det er localhost! svarer fint og kan sagtens logge ind med den oprettede bruger - både fra Lokal ( og testet fra andre maskiner også)


julemand101
julemand101's picture
Antal: 1660
Tilmeldt:
17-01-2004
User is offline
#2 MySQL gør forskel på

#2
MySQL gør forskel på 127.0.0.1 og localhost hvor sidstnævnte betyder der forsøges at kommunikeres over en Unix socket. Jeg skal ikke kunne sige om det er det der giver dig problemer men har du prøvet at forbinde til 127.0.0.1 frem for localhost?

Jeg tror ikke du har et problem med at indlæse selve driveren da du ikke får en classloader exception.

Og sidst, må jeg lige indskyde at din Java koden er helt horribel skrevet... men det er næppe problemet. :D


frogmaster
frogmaster's picture
Antal: 3721
Tilmeldt:
20-05-2010
User is offline
#0Kan du bekræfte du ikke

#0

Kan du bekræfte du ikke har problemer med VPN og derfor muligvis også DNS, fx allerede i din router? https://www.linuxin.dk/node/22401

Det ser ud til at et skide javascript, kan injicere kode der kræver reset af routeren.