使用java.sql.DriverManager.getConnection突然“许可证签出失败”

时间:2017-09-12 13:59:58

标签: java mysql database matlab

我正在运行并维护一个基于MySQL数据库访问的Matlab应用程序。突然间,经过8年的数据库连接成功,我收到了“许可错误:-18,147”,表明没有安装和许可通讯工具箱。虽然从未在机器上安装过此TB,但自从三周以来,机器上的所有三个Matlab版本(2012b,2015a,2016b)都会出现此错误。

错误发生在编译时(JIT),只有以下行

 this.dbCon = java.sql.DriverManager.getConnection(this.dbUrl, this.dbUsr, this.dbPwd);  

评论该行,消除错误,但当然不能解决问题。任何提示或想法,如何突然发生一段多年没有改变的代码,显然甚至不是原生的Matlab?

鲁道夫

1 个答案:

答案 0 :(得分:0)

问题有一个非常分散的解决方案,根本不能称之为真正的解决方案,我也不知道它是否可持续。 对我来说,如果遇到许可证问题,MATLAB似乎会将第一个单独的文件列入黑名单,然后将整个目录列入黑名单。

在四处寻找 - 评论行,重命名文件,将代码复制到新文件等等 - 我突然意识到错误-18也立即发生,当我试图将一些无害的新函数保存到应用程序目录中时包含带有“faulty”命令的代码。最后结果是,即使是一个空的新文件也会产生许可证错误 - 尽管不是目录中的每个文件:

{{1}}

在下一步中,我将所有文件移动到不同的目录中,以找出MATLAB仍然坚持错误-18。然后我开始先将文件一个接一个地移回AppDB文件夹,然后使用“which”检查每个文件的许可证。令我惊讶的是,emptyfile.m不再有许可证问题,而且没有其他问题。该应用程序再次使用完整的sql-Access运行,说实话,我觉得Matlab许可证管理有点欺骗,因为我没有看到问题出现的原因以及为什么它消失了。

结论:Matlab似乎使用一些(错误的)内部保护机制来将涉嫌许可证问题的文件夹列入黑名单。此文件夹中的新文件也将立即列入黑名单。将所有文件移动到另一个文件夹也会将此文件夹列入黑名单(因为它包含列入黑名单的文件)。移回未列入黑名单的文件会再次将原始文件夹列入白名单。之后,也可以将列入黑名单的文件移回并列入白名单。