首页 > 解决方案 > 连接到postgresql数据库时出现matlab错误

问题描述

我正在尝试使用以下命令连接到 PostgreSQL 数据库:

connection = database( ...
        options.getDatabaseName(), ...
        options.getUsername(), ...
        options.getPassword(), ...
        "org.postgresql.Driver", ...
        "jdbc:postgresql://" + options.getHostname() + ":" + options.getPort() + "/" + options.getDatabaseName() ...
        );

它返回我以下错误:

Error using database (line 59)
Unmatched parameter name 'org.postgresql.Driver' must be a string scalar or character vector that can represent a field name.

我已经看到了其他问题,比如这个,但错误信息是不同的。

我做错了什么?

标签: postgresqlmatlab

解决方案


我自己找到了解决方案,而且很棘手(在我看来可能与错误有关)。

为了测试数据库连接,我首先创建了一个与数据库资源管理器的连接。它起作用了,我使用相同的数据库名称保存了这个连接。

当我使用该database命令时,通过检查它的源代码,我发现它首先检查是否存在具有该名称的现有数据源,如果没有,它会搜索数据库。问题是由于我的连接具有相同的数据库名称,database假设我想使用数据源命令版本而不是数据库。它试图使用这个命令:

conn = database(datasource,username,password)

而不是这个:

conn = database(databasename,username,password,driver,url)

因为wtrade既是数据库的名称,也是数据源的名称。在这种情况下,根据 Matlab 文档,第四个参数driver, 必须是参数名称,例如"Vendor"of "PortNumber",因此由于驱动程序字符串与参数名称不匹配,因此我遇到了错误。

我已经删除了与数据库同名的数据源,一切都开始工作了。

我已将此通知 MathWorks,因为在我看来,如果数据库具有相同的数据源名称应该没有问题,因为签名不同,所以database命令也应该处理这种情况。


推荐阅读