尝试连接到mysql时出现StackOverflower错误

gstyhher  于 2021-06-25  发布在  Mysql
关注(0)|答案(0)|浏览(227)

我正在尝试在基于java的项目和mysql数据库之间建立连接。据我所知,数据库似乎很好(预期的信息存储在它的列中)。然而,当我使用java程序打开一个连接时,我得到了一个stackoverflow错误,我不知道为什么会发生这种情况:

Exception in thread "Thread-2" java.lang.StackOverflowError
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:411)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:270)

我已经采取了一些行动来解决这个问题,但都没有奏效。其中,我成功地运行了mysqljavatutorials中描述的示例,这使我认为这个问题不是因为jdbc连接器、操作系统、数据库本身或mysql服务器版本。
但是,我注意到,如果我完全删除数据库(通过执行drop database mydatabase),我会得到完全相同的异常,就好像数据库根本不存在一样。如果我将数据库的名称更改为不存在的名称,也会发生这种情况。我的机器使用:
操作系统:ubuntu 64位14.04.5 lts
mysql服务器版本:5.5.58
日 eclipse 氧气2
java 1.8.0—
你知道为什么会这样吗?
虽然我正在处理的项目相当复杂,但调用函数的调用位置是:

@Override
    public void openDBConnection() throws Exception {
        //this method establish a database connection
        try {
            // This will load the MySQL driver, each DB has its own driver
            Class.forName(driver);

            // Setup the connection with the DB

            //////////////////////////////////////////////////////////////////////////////
            String connection = "jdbc:mysql://" + host + "/" + dbname + "?"
                    + "user=" + user + "&password=" + passwd + "&useSSL=false";
            System.out.println(connection);
            connect = DriverManager.getConnection(connection);
            //////////////////////////////////////////////////////////////////////////////

        } catch (ClassNotFoundException | SQLException e) {
            throw e;
        } finally {
        }
    }

异常在 connect = DriverManager.getConnection(connection); 线路。我得到的连接字符串很好。实际上,我很确定这与 JDBC connection 因为如果我写错了司机´然后我得到一个合理的错误而不是它。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题