Weka连接数据库不成功:unable to find a suitable driver for jdbc:mysql://localhost/programmableweb

按照书上内容安装并修改配置文件
1.4 访问数据库
虽然Weka数据集默认可以保存在ARFF格式的文件中,但很多数据挖掘应用都可能要求直接访问数据库,对数据库表的记录进行挖掘,尤其是在数据集非常大的情况下。Weka使用JDBC访问数据库。
1.4.1 配置文件
首先做三项准备工作:第一,如果Weka正在运行中,记得先关闭Weka;第二,下载数据库驱动。Weka支持大部分常用数据库,本书采用的数据库是MySQL 5.5.15,使用的JDBC驱动是com.mysql.jdbc.Driver,因此本书下载mysql-connector-java-5.1.6.jar驱动文件,并设置CLASSPATH环境变量指向该驱动,这使得Weka能找到JDBC驱动,如图1.17所示设置环境变量;
Weka连接数据库不成功:unable to find a suitable driver for jdbc:mysql://localhost/programmableweb_第1张图片
第三,启动数据库运行,确保已经建立名称为weka的数据库,为该库建立名称为APP的用户,密码自定,并为APP用户赋予查询权限。
要正常访问数据库,根据计算机的实际情况正确修改配置文件是关键。Weka的配置文件名称为DatabaseUtils.props,位于weka.experiment包中。可以从weka.jar或weka-src.jar归档文件获取该配置文件。具体做法是,使用解压缩工具将归档文件解开,在weka/experiment子目录可以找到DatabaseUtils.props配置文件。本书直接在该配置文件的基础上进行修改。
为了方便用户,Weka对常用数据库都提供对应配置文件,在对应配置文件上进行修改要方便得多。例如:
(1) DatabaseUtils.props.hsql:适用HSQLDB 数据库;
(2) DatabaseUtils.props.msaccess:适用MS Access数据库;
(3) DatabaseUtils.props.mssqlserver:适用MS SQL Server 2000数据库;
(4) DatabaseUtils.props.mssqlserver2005:适用MS SQL Server 2005数据库;
(5) DatabaseUtils.props.mysql:适用MySQL数据库;
(6) DatabaseUtils.props.odbc:适用ODBC/JDBC桥连接的数据库;
(7) DatabaseUtils.props.oracle:适用Oracle 10g数据库;
(8) DatabaseUtils.props.postgresql:适用PostgreSQL 7.4数据库;
(9) DatabaseUtils.props.sqlite3:适用sqlite 3.x数据库。
如下图所示:

Weka连接数据库不成功:unable to find a suitable driver for jdbc:mysql://localhost/programmableweb_第2张图片
注意: Weka只会去寻找名称为DatabaseUtils.props的配置文件,如果用户想以其余配置文件中的一个(如DatabaseUtils.props.mysql)作为模板,在此基础上进行修改,一定记住要先改名。

打开配置文件,在文件中找到如程序清单1.2所示的内容。注意到粗体字的两行,分别指定了连接数据库必需的两个参数——jdbcDriver和jdbcURL。

程序清单1.2  原DatabaseUtils.props文件内容

# The comma-separated list of jdbc drivers to use
#jdbcDriver=RmiJdbc.RJDriver,jdbc.idbDriver
#jdbcDriver=jdbc.idbDriver
jdbcDriver=RmiJdbc.RJDriver,jdbc.idbDriver,org.gjt.mm.mysql.Driver,com.mckoi.JDBCDriver,org.hsqldb.jdbcDriver
#jdbcDriver=org.gjt.mm.mysql.Driver

# The url to the experiment database
#jdbcURL=jdbc:rmi://expserver/jdbc:idb=experiments.prp
jdbcURL=jdbc:idb=experiments.prp
#jdbcURL=jdbc:mysql://mysqlserver/username

本书使用MySQL,因此将代码清单1.2所示的未注释的两行分别修改为如下两行。

jdbcDriver=com.mysql.jdbc.Driver
jdbcURL=jdbc:mysql://localhost:3306/weka

如果读者使用不同的数据库,或者使用不同的端口号,请根据具体的数据库配置,设置这两个参数。
完成DatabaseUtils.props文件的设置后,必须放在如下三个固定位置之一,Weka才能找到。
(1) 当前目录。直接放在Weka 3.7的安装目录中。

(2) 用户目录中。如果使用Windows的用户不知道自己的用户目录,可以在命令行输入如下命令:

echo %USERPROFILE%

就可以得到用户目录的路径。Weka 3.7.2以下的版本直接将配置文件放在用户目录中,而Weka 3.7.2以上的版本则需要将配置文件放在用户目录下的wekafiles/ props子目录中。

(3) 类路径中。通常是weka.jar文件。
注意: Weka也是按上述顺序去查找配置文件的,找到后就不再进行查找。因此前面位置优先于后面位置。

1.4.2 访问数据库
重新启动Weka。在Weka GUI 选择器中,单击右边的第一个按钮Explorer,启动探索者,单击探索者的第三个按钮Open DB,弹出如图1.18所示的SQL查看器窗口。注意到URL栏的内容,已经变成了前文修改的配置文件中jdbcURL的值。
Weka连接数据库不成功:unable to find a suitable driver for jdbc:mysql://localhost/programmableweb_第3张图片
图1.18 SQL查看器

单击按钮连接数据库,如果前面的设置无误,会在SQL查看器窗口的下部出现数据库已连接的提示,如图1.20所示。
Weka连接数据库不成功:unable to find a suitable driver for jdbc:mysql://localhost/programmableweb_第4张图片
图1.19 数据库连接参数

Weka连接数据库不成功:unable to find a suitable driver for jdbc:mysql://localhost/programmableweb_第5张图片
图1.20 数据库已连接提示

现在,需要从数据库中查询数据。由于本书已经将iris数据集导入到名称为iris的数据库表中,因此只需要输入SQL语句,如图1.21所示,单击Execute按钮执行查询,得到如图1.22所示的查询结果。

Weka连接数据库不成功:unable to find a suitable driver for jdbc:mysql://localhost/programmableweb_第6张图片
图1.21 输入SQL语句

Weka连接数据库不成功:unable to find a suitable driver for jdbc:mysql://localhost/programmableweb_第7张图片
图1.22 查询结果
恭喜!您已经完成了较难的工作,从数据库中成功查询到数据。

1.4.3 常见问题及解决办法
如果读者没有连接上数据库,不要着急。按如下顺序依次检查可能产生问题的设置:数据库驱动程序是否正确?CLASSPATH的设置是否正确?配置文件中jdbcDriver和jdbcURL两项配置是否正确拼写?配置文件是否放到正确位置?数据库用户名和密码是否正确?该数据库用户是否拥有足够权限?数据库是否已经启动?等等。
若以上方法都未能解决问题,建议尝试修改RunWeka.ini配置文件,在weka\Weka-3-8目录下,将驱动mysql-connector-java-5.1.6.jar文件的地址直接加入配置文件。
如下图所示:
Weka连接数据库不成功:unable to find a suitable driver for jdbc:mysql://localhost/programmableweb_第8张图片
重启weka,尝试连接。

你可能感兴趣的:(学习笔记)