Meclipse连接MySQL数据库,连接不了unable to create connection.Check your URL

博主在使用MyEclipse连接MySQL数据库时遇到TestDriver报错,通过更改Driverclassname为com.mysql.jdbc.Driver成功解决了问题。

开始做系统了

打开MySQL,打开MyEclipse,连接数据库,Test Driver报错(我的JARs只能选择第一个驱动包,选第二个没用,我也不知道为什么)

报错如下:

百度说Driver classname要换,换为com.mysql.jdbc.Driver

再来测试一下:

成功!!!!

记录一下,怕下次忘记。当然,等我毕业了应该就不会遇到这个问题了,哈哈哈哈哈哈,程序猿转行。

[root@hadoop002 conf]# hive Logging initialized using configuration in jar:file:/opt/programs/apache-hive-1.2.2-bin/lib/hive-common-1.2.2.jar!/hive-log4j.properties Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:522) at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:677) at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:621) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.hadoop.util.RunJar.run(RunJar.java:221) at org.apache.hadoop.util.RunJar.main(RunJar.java:136) Caused by: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1523) at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.<init>(RetryingMetaStoreClient.java:86) at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:132) at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:104) at org.apache.hadoop.hive.ql.metadata.Hive.createMetaStoreClient(Hive.java:3005) at org.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:3024) at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:503) ... 8 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1521) ... 14 more Caused by: javax.jdo.JDOFatalInternalException: Error creating transactional connection factory NestedThrowables: java.lang.reflect.InvocationTargetException at org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:587) at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.freezeConfiguration(JDOPersistenceManagerFactory.java:788) at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.createPersistenceManagerFactory(JDOPersistenceManagerFactory.java:333) at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.getPersistenceManagerFactory(JDOPersistenceManagerFactory.java:202) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at javax.jdo.JDOHelper$16.run(JDOHelper.java:1965) at java.security.AccessController.doPrivileged(Native Method) at javax.jdo.JDOHelper.invoke(JDOHelper.java:1960) at javax.jdo.JDOHelper.invokeGetPersistenceManagerFactoryOnImplementation(JDOHelper.java:1166) at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:808) at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:701) at org.apache.hadoop.hive.metastore.ObjectStore.getPMF(ObjectStore.java:365) at org.apache.hadoop.hive.metastore.ObjectStore.getPersistenceManager(ObjectStore.java:394) at org.apache.hadoop.hive.metastore.ObjectStore.initialize(ObjectStore.java:291) at org.apache.hadoop.hive.metastore.ObjectStore.setConf(ObjectStore.java:258) at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:76) at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:136) at org.apache.hadoop.hive.metastore.RawStoreProxy.<init>(RawStoreProxy.java:57) at org.apache.hadoop.hive.metastore.RawStoreProxy.getProxy(RawStoreProxy.java:66) at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.newRawStore(HiveMetaStore.java:593) at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.getMS(HiveMetaStore.java:571) at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.createDefaultDB(HiveMetaStore.java:624) at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.init(HiveMetaStore.java:461) at org.apache.hadoop.hive.metastore.RetryingHMSHandler.<init>(RetryingHMSHandler.java:66) at org.apache.hadoop.hive.metastore.RetryingHMSHandler.getProxy(RetryingHMSHandler.java:72) at org.apache.hadoop.hive.metastore.HiveMetaStore.newRetryingHMSHandler(HiveMetaStore.java:5768) at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.java:199) at org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient.<init>(SessionHiveMetaStoreClient.java:74) ... 19 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.datanucleus.plugin.NonManagedPluginRegistry.createExecutableExtension(NonManagedPluginRegistry.java:631) at org.datanucleus.plugin.PluginManager.createExecutableExtension(PluginManager.java:325) at org.datanucleus.store.AbstractStoreManager.registerConnectionFactory(AbstractStoreManager.java:282) at org.datanucleus.store.AbstractStoreManager.<init>(AbstractStoreManager.java:240) at org.datanucleus.store.rdbms.RDBMSStoreManager.<init>(RDBMSStoreManager.java:286) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.datanucleus.plugin.NonManagedPluginRegistry.createExecutableExtension(NonManagedPluginRegistry.java:631) at org.datanucleus.plugin.PluginManager.createExecutableExtension(PluginManager.java:301) at org.datanucleus.NucleusContext.createStoreManagerForProperties(NucleusContext.java:1187) at org.datanucleus.NucleusContext.initialise(NucleusContext.java:356) at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.freezeConfiguration(JDOPersistenceManagerFactory.java:775) ... 48 more Caused by: org.datanucleus.exceptions.NucleusException: Attempt to invoke the "BONECP" plugin to create a ConnectionPool gave an error : The specified datastore driver ("com.mysql.jdbc.Driver") was not found in the CLASSPATH. Please check your CLASSPATH specification, and the name of the driver. at org.datanucleus.store.rdbms.ConnectionFactoryImpl.generateDataSources(ConnectionFactoryImpl.java:259) at org.datanucleus.store.rdbms.ConnectionFactoryImpl.initialiseDataSources(ConnectionFactoryImpl.java:131) at org.datanucleus.store.rdbms.ConnectionFactoryImpl.<init>(ConnectionFactoryImpl.java:85) ... 66 more Caused by: org.datanucleus.store.rdbms.connectionpool.DatastoreDriverNotFoundException: The specified datastore driver ("com.mysql.jdbc.Driver") was not found in the CLASSPATH. Please check your CLASSPATH specification, and the name of the driver. at org.datanucleus.store.rdbms.connectionpool.AbstractConnectionPoolFactory.loadDriver(AbstractConnectionPoolFactory.java:58) at org.datanucleus.store.rdbms.connectionpool.BoneCPConnectionPoolFactory.createConnectionPool(BoneCPConnectionPoolFactory.java:54) at org.datanucleus.store.rdbms.ConnectionFactoryImpl.generateDataSources(ConnectionFactoryImpl.java:238) ... 68 more
最新发布
06-20
<think>我们正在解决HiveMetastore连接MySQL时无法加载驱动的问题,具体错误是“com.mysql.jdbc.DrivernotfoundinCLASSPATH”。根据引用[1],这个错误是因为MySQL驱动不在CLASSPATH中。我们需要确保MySQLJDBC驱动jar文件被正确放置在Hive的lib目录下,并且Hive服务能够访问到它。解决方案步骤:1.**下载MySQLJDBC驱动**:访问MySQL官网下载对应版本的JDBC驱动(Connector/J)。例如,对于MySQL5.x,可以使用5.1.x版本的驱动。下载地址:https://dev.mysql.com/downloads/connector/j/2.**将驱动JAR文件放入Hive的lib目录**:假设Hive安装在`/opt/programs/apache-hive-1.2.2-bin`,则执行:```bashcpmysql-connector-java-5.1.47.jar/opt/programs/apache-hive-1.2.2-bin/lib/```注意:请根据实际下载的驱动版本修改文件名。3.**检查Hive的CLASSPATH**:启动Hive时,确保CLASSPATH包含了该驱动。可以通过以下方式检查:-在启动Hive之前设置环境变量(可选):```bashexportHIVE_HOME=/opt/programs/apache-hive-1.2.2-binexportHADOOP_HOME=/path/to/hadoop#如果Hadoop不在标准路径,需要指定exportCLASSPATH=$HIVE_HOME/lib/mysql-connector-java-5.1.47.jar:$CLASSPATH```注意:通常将驱动放入`$HIVE_HOME/lib`目录后,Hive会自动加载,所以这一步通常可以省略。4.**验证驱动是否被加载**:可以尝试在命令行运行以下命令,检查是否能够加载驱动类:```bashjava-cp$HIVE_HOME/lib/mysql-connector-java-5.1.47.jarcom.mysql.jdbc.Driver```如果没有报错(即没有抛出ClassNotFoundException),则说明驱动JAR有效。5.**重启Hive服务**:确保在放置驱动后重启Hive服务(如果是以服务方式运行)或者重新启动HiveCLI。6.**检查Hive配置**(hive-site.xml):确保配置中指定的驱动类名正确:```xml<property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property>```7.**如果使用HiveMetastore服务**:如果HiveMetastore是作为独立服务运行的,那么需要确保该服务的CLASSPATH中也包含MySQL驱动。可以将驱动JAR同样放入Metastore服务运行的lib目录(通常是Hive的lib目录,或者服务启动脚本指定的类路径)。8.**注意权限问题**:确保运行Hive的用户有权限读取驱动JAR文件。如果按照以上步骤操作后问题仍然存在,请检查以下事项:-驱动JAR文件是否损坏?重新下载一次。-是否使用了错误的驱动类名?在较新版本的MySQL驱动中,类名可能是`com.mysql.cj.jdbc.Driver`,但Hive1.2.2通常使用`com.mysql.jdbc.Driver`。-检查Hive日志(通常位于`/tmp/<username>/hive.log`)中是否有更详细的错误信息。根据引用[3],在解决了驱动问题后,可能还会遇到其他连接问题,因此需要确保数据库连接URL、用户名和密码正确,并且MySQL服务允许远程连接(如果Metastore和MySQL不在同一台机器上)。引用[2]中显示用户已经成功连接MySQL(使用命令行),这说明MySQL服务是运行的,并且用户名密码正确。因此,我们只需要解决驱动加载问题。最后,如果问题解决,应该能够正常启动HiveCLI并执行命令,如`showdatabases;`。§§相关问题§§1.如何为不同版本的Hive配置MySQL数据库?2.HiveMetastore独立服务的配置步骤是什么?3.如何解决Hive连接MySQL时的权限问题?</think>### 解决 Hive Metastore 无法加载 MySQL 驱动问题(`com.mysql.jdbc.Driver` not found) 该错误表明 Hive 无法在 CLASSPATH 中找到 MySQL JDBC 驱动。以下是完整解决方案: #### 1. 确认驱动文件存在 ```bash # 检查驱动文件是否存在 ls $HIVE_HOME/lib | grep mysql-connector # 预期输出(版本可能不同): mysql-connector-java-5.1.47.jar ``` #### 2. 下载并放置正确驱动版本(核心步骤) ```bash # 下载 MySQL JDBC 驱动(兼容 Hive 1.2.2) wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.47.tar.gz # 解压并复制到 Hive 的 lib 目录 tar -zxvf mysql-connector-java-5.1.47.tar.gz cp mysql-connector-java-5.1.47/mysql-connector-java-5.1.47.jar $HIVE_HOME/lib/ # 设置权限 chmod 644 $HIVE_HOME/lib/mysql-connector-java-5.1.47.jar ``` #### 3. 验证 CLASSPATH 包含驱动 在 `hive-env.sh` 中显式添加驱动路径: ```bash # 编辑 Hive 环境配置文件 vi $HIVE_HOME/conf/hive-env.sh # 添加以下内容(根据实际路径调整) export HIVE_AUX_JARS_PATH=/opt/programs/apache-hive-1.2.2-bin/lib/mysql-connector-java-5.1.47.jar ``` #### 4. 检查驱动类名配置 在 `hive-site.xml` 确认驱动类名正确: ```xml <property> <name>javax.jdo.option.ConnectionDriverName</name> <!-- 使用旧版驱动类名(Hive 1.x 兼容) --> <value>com.mysql.jdbc.Driver</value> </property> ``` #### 5. 手动加载测试驱动(诊断步骤) ```bash # 使用 Hadoop 命令测试驱动是否可加载 hadoop jar $HIVE_HOME/lib/mysql-connector-java-5.1.47.jar # 预期成功输出: No main class specified; try -help ``` #### 6. 解决常见冲突问题 若仍报错,检查是否存在重复/冲突的驱动: ```bash # 查找重复的 MySQL 驱动 find $HIVE_HOME/lib -name "*mysql*.jar" # 移除旧版本驱动(保留一个即可) rm $HIVE_HOME/lib/mysql-connector-java-8.0.xx.jar ``` #### 7. 最终验证 ```bash # 重新初始化元数据库 schematool -initSchema -dbType mysql # 启动 Hive CLI hive hive> show databases; # 应返回默认数据库 ``` > **关键说明**:Hive 1.2.2 必须使用 **MySQL Connector/J 5.1.x** 版本驱动,新版本(8.x)会导致类名不兼容(新版类名为 `com.mysql.cj.jdbc.Driver`)[^1]。 ### 驱动加载失败排查表 | 现象 | 解决方案 | |-------|----------| | `ClassNotFoundException` | 检查 JAR 文件名是否完整<br>确认文件权限(644) | | `No suitable driver` | 验证 `hive-site.xml` 的驱动类名拼写 | | 多版本冲突 | 删除除 5.1.x 外的所有 MySQL JAR | | 路径错误 | 在 `hive-env.sh` 显式设置 `HIVE_AUX_JARS_PATH` |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值