项目部分功能从别的平台移植过来,运行报错如上:java.lang.IllegalArgumentException: Database product name must not be null。一看到这个错第一反应是数据库中缺少表或者表中少字段,所以去检查了这段代码运行需要的所有表,并不缺少;又再去将表中的字段对了一遍,很坑,字段也不少。
进一步分析:将sql语句打印出来在数据库运行,发现运行不了。原来是数据库语句的问题。原项目使用的是MySql数据库,现项目使用的是达梦数据库,其中有部分代码语句,达梦数据库无法识别,故此报错。到此问题找到。
下面解决问题:原sql语句为DSL.timestampAdd(TBL_MONITOR_DEV_COMMAND_HISTORY.CREATE_TIME, day, DatePart.DAY,意思是在表中某字段时间的基础上再加上一个可设置的时间基础,在与其他条件进行比较。这句sql语句在达梦数据库中无法识别。在网上搜索了下,关于达梦数据库的资料比较少。又找了下达梦数据库手册,在里面找到了关于时间加减的sql语句,将原代码修改如下:DSL.field("TBL_MONITOR_DEV_COMMAND_HISTORY.CREATE_TIME+"+day。
再次启动项目,运行正常。
总结:MySql数据库和达梦数据库在语法上是有区别的,针对具体数据库的相同功能的语句不一定一样,需要查验手册,不可自以为。