weka读取mysql数据时发生unknown data type的类型不匹配报错解决方案

1.前言:
在我的上篇博客里我在连接weka和MySQL方面给了大家一些解决的方案,但是在使用时还是存在一些问题,就是我题目描述的weka不能识别mysql的数据类型的问题,原因我就简单的阐述一下:MySQL之所以对有些字段类型不能解释为weka属性类型是因为他们两个支持的Java类型不一样,举个栗子:jdbc驱动会把MySQL的TEXT字段类型映射为weka属性中的BLOB类型,这就需要我们在配置文件中将这种映射关系重新修改,下面就进行我们的教学环节,非常简单容易操作

  1. 道需要继续修改weka.jar里的weka/experiment/DatabaseUtils.props,在里面添加该类型,首先要注意的是如果是类型里有空格请转义或者用下划线代替,如下图的操作在这里插入图片描述
    或者你直接复制我的放在对应的位置上,代码如下
 string, getString() = 0;    --> nominal
 boolean, getBoolean() = 1;  --> nominal
 double, getDouble() = 2;    --> numeric
 byte, getByte() = 3;        --> numeric
 short, getByte()= 4;        --> numeric
 int, getInteger() = 5;      --> numeric
 long, getLong() = 6;        --> numeric
 float, getFloat() = 7;      --> numeric
 date, getDate() = 8;        --> date
 text, getString() = 9;      --> string
 time, getTime() = 10;       --> date
 timestamp, getTime() = 11;  --> date
 BigDecimal,getBigDecimal()=11; -->nominal

接着修改下面的文件内容,建议直接复制我的粘贴进去,自己敲的话容易出错:在这里插入图片描述

char=0
varchar=0
longvarchar=0
binary=0
varbinary=0
longvarbinary=0
bit=1
numeric=2
decimal=2
tinyint=3
smallint=4
integer=5
bigint=6
real=7
float=2
double=2
date=8
time=10
timestamp=11

在这里插入图片描述

TINYINT=3
SMALLINT=4
SHORT=5
INTEGER=5
INT=5
INT_UNSIGNED=6
BIGINT=6
LONG=6
REAL=7
NUMERIC=2
DECIMAL=2
FLOAT=2
DOUBLE=2
CHAR=0
TEXT=0
VARCHAR=0
LONGVARCHAR=9
BINARY=0
VARBINARY=0
LONGVARBINARY=9
BIT=1
BLOB=8
DATE=8
TIME=8
DATETIME=8
TIMESTAMP=8
SMALLINT_UNSIGNED=4
TINYINT_UNSIGNED=3
YEAR=5

ok了,只需要在上面的位置添加对应的映射类型即可,再次运行sql语句你的MySQL内容就能被weka识别了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值