【问题标题】:Set up a JDBC connection from Matlab to MySQL on osX在 osX 上设置从 Matlab 到 MySQL 的 JDBC 连接
【发布时间】:2019-06-05 08:39:29
【问题描述】:

我已设置 MATLAB(2016b 64 位)与本地 MySQL 服务器交互。我按照说明在 Matlab 的 prefdir 位置创建了一个 javaclasspath.txt 文件,我保存了 mysql-connector-java-5.1.40-bin.jar 位置。 之后,我使用原生 Matlab Database Explorer App 建立连接,按照步骤操作后,Matlab 在当前文件夹上创建了一个 .mat 文件(见图):

正如您在上面看到的,.mat 文件包含一个带有所列输入的元胞数组。 我的问题如下,现在我已经成功设置了服务器,我想创建一个“conn = database()”变量。我怎样才能做到这一点?我已经阅读了 Stackoverflow 上的 Matlab guideguide,但是当我 execute 时出现错误“连接无效”:

conn = database('Data_Science', 'root', '*****', 'com.mysql.jdbc.Driver', 'jdbc:mysql://localhost:3306/Data_Science?useSSL=false');


e = exec(conn,['create table BULKTEST (salary decimal, '...
   'player varchar(25), signed_date varchar(25), '...
   'team varchar(25))']);

我上面的代码有问题吗?我是不是把信息写错了?第二部分 (e) 是来自 Matlab 网站的 c/p。所以我的疑虑是关于 conn。

更新:当我尝试命令 isoprene(conn) 返回一个“0”。我仍然不明白为什么我可以通过数据库资源管理器正确连接,但不能通过 conn 命令。

更新:我展示了数据库以及 Matlab 数据库浏览器应用程序的更多照片

【问题讨论】:

  • 您是否尝试过从其他地方连接到数据库?例如同一台计算机上的 MySQL 工作台是 Matlab。另外,Data_Science 数据库是否存在?
  • 是的,我创建了一个名为 Data_Science 的本地数据库。我更新了资料,请看。我真的不知道在这里做什么。
  • 仅尝试database(host,user,pwd)...
  • 不幸的是,我已经尝试过了。不过感谢您的建议!

标签: mysql macos matlab jdbc


【解决方案1】:

好的,问题出在我的代码上,特别是“conn”命令。

当我使用此代码时,不包括 ?useSSL=false :

conn = database('Data_Science', 'root', '*****', 'com.mysql.jdbc.Driver', 'jdbc:mysql://localhost:3306/Data_Science');

我收到了这个警告:

Fri Feb 10 13:48:03 GMT 2017 WARN: Establishing SSL connection without
server's identity verification is not recommended. According to MySQL
5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established 
by default if explicit option isn't set. For compliance with existing
applications not using SSL the verifyServerCertificate property is set to
'false'. You need either to explicitly disable SSL by setting useSSL=false,
or set useSSL=true and provide truststore for server certificate verification.

所以我上网查了一下,解决办法是在 conn 的末尾加上 ?useSSL=false。确实,这很有效,因为我不再收到任何进一步的警告,但是当我检查工作区上的 conn 时,有一行显示以下消息:

The connection property 'useSSL' only accepts values of the form: 'true',
 'false', 'yes' or 'no'. The value 'falseData_Science' is not in this set.

这是我以前从未注意到的,实际上这就是导致连接错误的原因。所以我只是退回到原来的 conn,修改我所做的 ?useSSL=false 更改。现在,我仍然收到警告,但它有效。

【讨论】:

    【解决方案2】:

    尝试在末尾使用 &: conn = database('Data_Science', 'root', '*****', 'com.mysql.jdbc.Driver', 'jdbc:mysql://localhost:3306/Data_Science?useSSL=false&')

    【讨论】:

      猜你喜欢
      • 2011-09-08
      • 2023-04-07
      • 2016-11-08
      • 1970-01-01
      • 2014-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-27
      相关资源
      最近更新 更多