com.mysql.jdbc.ConnectionImpl.getServerCharset(ConnectionImpl.java:3005) 处的 java.lang.NullPointerException

2023-12-13

我今天转移到 macOS 并重新创建了一个非常简单的数据库测试项目来检查我的 mySQL 连接。但我收到 SQL 异常:“无法创建与数据库服务器的连接”。这是完整的日志:https://pastebin.com/iZrktVKn

我实际上复制了我在 Windows 上所做的每一步。在 Windows 上一切都很好。我有 1 个 context.xml、1 个 Servlet 和 1 个 Connector.jar 文件。该项目应该在 Tomcat 上运行。

上下文.xml:

<Context>

  <Resource name="jdbc/web_student_tracker" 
            auth="Container" type="javax.sql.DataSource"
               maxActive="20" maxIdle="5" maxWait="10000"
               username="webstudent" password="webstudent" 
               driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://localhost:3306/web_student_tracker?useSSL=false"/>

</Context>

Servlet(只是重要的事情):

        @Resource(name="jdbc/web_student_tracker")
        private DataSource dataSource;

Servlet 中的 doGet 方法:

        //Printwiter + content type setting
        PrintWriter out = response.getWriter();
        response.setContentType("text/plain");

        //Get a connection to the database
        Connection myConn = null;
        Statement myStmt = null;
        ResultSet myRs = null;

        try{
            myConn = dataSource.getConnection();

            //Create SQL statements
            String sql = "select * from student";
            myStmt = myConn.createStatement();

            //Execute SQL query
            myRs = myStmt.executeQuery(sql);

            //Process the ResultSet
            while(myRs.next()) {
                String email = myRs.getString("email");
                out.println(email);
            }


        } catch(Exception ex) {
            ex.printStackTrace();
        }   
    }

我确实在数据库中添加了一个“webstudent”用户:

CREATE USER 'webstudent'@'localhost' IDENTIFIED BY 'webstudent';

GRANT ALL PRIVILEGES ON * . * TO 'webstudent'@'localhost';

一切都已启动并运行,我缺少什么?我对 macOS 开发也很陌生,对 MySQL 也很陌生。但在 Windows 上,一切都运行良好。

堆栈跟踪:

java.sql.SQLException: Cannot create PoolableConnectionFactory (Could not create connection to database server.)
    at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2333)
    at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2062)
    at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1532)
    at com.jsptanulas.web.jdbc.TestServlet.doGet(TestServlet.java:40)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1539)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1495)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.base/java.lang.Thread.run(Thread.java:844)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:488)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
    at com.mysql.jdbc.Util.getInstance(Util.java:387)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:917)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:896)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:885)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2332)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2085)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:795)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:488)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:400)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:327)
    at org.apache.tomcat.dbcp.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
    at org.apache.tomcat.dbcp.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:260)
    at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:2343)
    at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2329)
    ... 26 more
Caused by: java.lang.NullPointerException
    at com.mysql.jdbc.ConnectionImpl.getServerCharset(ConnectionImpl.java:3005)
    at com.mysql.jdbc.MysqlIO.sendConnectionAttributes(MysqlIO.java:1916)
    at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1845)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1215)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2255)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2286)
    ... 40 more

问题是连接器版本和 MySQL 版本不匹配。 MySQL 8 需要 JDBC 连接器 .jar 中的版本 8。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

com.mysql.jdbc.ConnectionImpl.getServerCharset(ConnectionImpl.java:3005) 处的 java.lang.NullPointerException 的相关文章

随机推荐

  • 日志在生产中无法正常工作,作业延迟

    我遇到了一些奇怪的问题 我的delayed jobs 在生产中失败 最后我将范围缩小到记录器 如果我注释掉我的日志函数调用 一切都会正常 但是 如果我尝试记录 我会在delayed job处理程序中得到这个 ruby struct Dela
  • 通用静态字段初始化

    我只是对以下代码感到好奇 public static class Container
  • Swift 4 中的 UIButton 数组

    我用 UIButtons 在 UiKit 中制作了一系列复选框 IBOutlet weak var Box1 UIButton IBOutlet weak var Box2 UIButton IBOutlet weak var Box3 U
  • 如何摆脱 Chrome 控制台中的 [VM] 行?

    现在我可以在我的 chrome 开发者工具中看到有关 VM 的信息 如下所示 我找到了一些解决方案 例如将 暂停按钮 设为灰色 但是 它在我的开发工具中已经是灰色的 这对我来说也不起作用 如何消除控制台中的虚拟机消息 感谢您阅读我的问题 右
  • 当我尝试启动 jetty 时,为什么 lambda 表达式会破坏 guice 错误处理?

    我在尝试启动 jetty 时遇到以下问题 出现以下异常 Execution default test of goal org apache maven plugins maven surefire plugin 2 17 test fail
  • Xcode 中的 EXC_BAD_ACCESS 中断?

    我对 iPhone 开发和 Xcode 不太熟悉 不知道如何开始排除故障EXC BAD ACCESS信号 如何让 Xcode 在导致错误的确切行处中断 我似乎无法让 Xcode 在导致问题的线路上停止 但我确实在调试控制台中看到以下几行 1
  • Android 状态栏动画

    我是 Android 新手 我想做一个电池充电动画例如 在手机中 屏幕右上角的小图标在充电时会上下移动 并在当前电池百分比处停止 到目前为止 在我的代码中 我已经能够让它移动 但它永远不会停止 我想要的是动画在未充电时停止或以当前电池百分比
  • React refs 如何使用,何时使用?

    您好 感谢您阅读这个问题 我已经学习 React 几个星期了 我很难理解 refs 如何获取 React 的实例并将其放入 JS 变量中 例如 我们可以讨论文档的示例 class CustomTextInput extends React
  • 如何在Intellij Idea上导入滑动菜单?

    我正在使用intellij idea 如您所知 导入滑动菜单当你在 Eclipse 上运行时 将 lib 添加到你的全新项目中是很痛苦的 我做过一次 但我不再使用 intellij idea 我想知道是否有人知道如何在使用 Intellij
  • 在 R 中以全球视角绘制地理数据

    如何 是否可以在具有 d3 透视视图的地球上绘制地理数据 例如多边形层 类似于这个图形在维基百科上 我想要一个解决方案sf and ggplot大多数 但欢迎任何解决方案 我问这个主要是出于好奇 但由于我经常看到这样的图形 我想这个问题可能
  • Google API V3 多个信息窗口以及点击关闭

    我想出了如何使用多个带有信息窗口的标记 但当您单击另一个标记时它们不会关闭 我相信这是因为我正在为每个标记创建一个新的信息窗口 任何帮助将不胜感激
  • 显示自定义多个引脚显示位置错误的引脚

    这个问题已经困扰我好几个星期了 我有一个标签栏应用程序 在一个选项卡上 我输入点 在另一个选项卡上 这些点显示在地图上 引脚应该根据点的类型而不同 我面临的问题是 每次我从一个选项卡切换到另一个选项卡时 图钉图像都会从应有的图像更改为其他图
  • 在perl中获取数组中的多个值

    我正在编写一个 prel 程序 其中有一个包含以下模式的输入文件 FIELDS 1 2 3 4 OR FIELDS 1 10 3 A 11 10 7 D 9 10 11 A 值的数量不是恒定的 而是以 4 个为一组 可能有 4 8 12 1
  • Django - TemplateView 和 POST

    我有一个由 TemplateView 生成并包含 POST 表单的页面 我如何将此表单与 TemplateView 一起使用 有一个与我的代码类似的示例 class ProjetMixin object def get context da
  • 在 XML 上应用 XSLT v.2

    我编写了一个 XSLT 2 0 版本文件 当它应用于 XML 文件时 出现以下错误 ERROR Unsupported XSL element http www w3 org 1999 XSL Transform sequence 这是Ja
  • Firebase存储读取安全规则似乎没有任何效果

    我正在努力为 Firebase 存储设置安全规则 但读取规则似乎没有任何效果 rules version 2 service firebase storage match b bucket o match allPaths allow re
  • 防止在门控签入构建中释放触发器

    如何停止不产生任何工件的门控签入构建上的发布触发器 我有一个启用了门控签入的构建定义 在发布和发布工件步骤中 我将条件设置如下 ne 变量 Build Reason CheckInShelveset 这意味着 如果构建是由门控签入触发的 则
  • Laravel - 数据透视表上的附加关系

    我有一个带 2 个键的常规数据透视表 但是 我还有第三列 我想在其中存储具有一对多关系的不同密钥 这可能有吗 Example 数据透视表 组织1 组织2 关系类型1 2 11 3 2 在本例中 组织编号 1 与组织编号 2 存在关系 关系类
  • 如何使用 Fluent API 添加所有者属性的等效项?

    如果不使用 TrackState 上的属性或为发布者 文章指定 OwnsOne 我似乎无法执行此操作 有什么方法可以在不使用属性的情况下将 TrackState 全局标记为自有类型吗 对于通过 google 访问的人 如何使用 Fluent
  • com.mysql.jdbc.ConnectionImpl.getServerCharset(ConnectionImpl.java:3005) 处的 java.lang.NullPointerException

    我今天转移到 macOS 并重新创建了一个非常简单的数据库测试项目来检查我的 mySQL 连接 但我收到 SQL 异常 无法创建与数据库服务器的连接 这是完整的日志 https pastebin com iZrktVKn 我实际上复制了我在