CDH Mysql数据库 JDBC driver cannot be found.

CDH Mysql数据库 JDBC driver cannot be found.,第1张

这是一个很容易出现的问题,网上很多内容将mysql驱动包上传到不对的路径导致出现问题。

cloudera manager添加hive时报错找不到jdbc driver

报错

JDBC driver cannot be found. Unable to find the JDBC database jar on host

把包放入这个目录,注意文件名要保持一致 网上又很多需要把这个驱动包放到

cp /root/mysql-connector-java-5.1.33-bin.jar /opt/cloudera/parcels/CDH-5.4.0-1.cdh5.4.0.p0.27/lib/hive/lib/

/opt/cloudera/parcels/CDH/lib/hive/lib或者

/opt/cloudera/parcels/CDH-5.4.0-1.cdh5.4.0.p0.27/lib/hive/lib

以上其实是同一个位置

*** 作后问题依旧出现。

解决方法:

后来在网上找到需要将这个包放到这个路径下就通过了(名字需要修改下)

/usr/share/java/mysql-connector-java.jar

import java.sql.DriverManagerimport java.sql.ResultSetimport java.sql.SQLExceptionimport java.sql.Connectionimport java.sql.Statement public class MysqlDemo {public static void main(String[] args) throws Exception {Connection conn = null String sql // MySQL的JDBC URL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称?参数=值// 避免中文乱码要指定useUnicode和characterEncoding// 执行数据库 *** 作之前要在数据库管理系统上创建一个数据库,名字自己定,// 下面语句之前就要先创建javademo数据库String url = "jdbc:mysql://localhost:3306/javademo?"+ "user=root&password=root&useUnicode=true&characterEncoding=UTF8" try {// 之所以要使用下面这条语句,是因为要使用MySQL的驱动,所以我们要把它驱动起来,// 可以通过Class.forName把它加载进去,也可以通过初始化来驱动起来,下面三种形式都可以Class.forName("com.mysql.jdbc.Driver")// 动态加载mysql驱动// or:// com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver() // or:// new com.mysql.jdbc.Driver() System.out.println("成功加载MySQL驱动程序") // 一个Connection代表一个数据库连接conn = DriverManager.getConnection(url) // Statement里面带有很多方法,比如executeUpdate可以实现插入,更新和删除等Statement stmt = conn.createStatement() sql = "create table student(NO char(20),name varchar(20),primary key(NO))" int result = stmt.executeUpdate(sql)// executeUpdate语句会返回一个受影响的行数,如果返回-1就没有成功if (result != -1) {System.out.println("创建数据表成功") sql = "insert into student(NO,name) values('2012001','陶伟基')" result = stmt.executeUpdate(sql) sql = "insert into student(NO,name) values('2012002','周小俊')" result = stmt.executeUpdate(sql) sql = "select * from student" ResultSet rs = stmt.executeQuery(sql)// executeQuery会返回结果的集合,否则返回空值System.out.println("学号\t姓名") while (rs.next()) {System.out.println(rs.getString(1) + "\t" + rs.getString(2))// 入如果返回的是int类型可以用getInt()}}} catch (SQLException e) {System.out.println("MySQL *** 作错误") e.printStackTrace() } catch (Exception e) {e.printStackTrace() } finally {conn.close() } } }


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10009228.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存