我正在尝试使用以下命令连接到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.
我看到了与此有关的其他问题,但错误消息有所不同。
我做错了什么?
我自己找到了解决方案,这很棘手(我认为这可能与错误有关)。
为了测试数据库连接,我首先创建了与数据库浏览器的连接。它起作用了,我使用数据库的相同名称保存了该连接。
当我使用该database
命令时,通过检查它的源代码,我发现它首先执行的操作是检查是否存在具有该名称的现有数据源,如果没有,则搜索数据库。问题在于,由于我的连接具有相同的数据库名称,database
因此我想使用数据源命令版本而不是数据库。它尝试使用此命令:
conn = database(datasource,username,password)
而不是这个:
conn = database(databasename,username,password,driver,url)
因为wtrade
既是数据库名称又是数据源名称。在这种情况下,根据Matlab文档,第四个参数,driver
必须是参数名称,例如"Vendor"
of "PortNumber"
,因此,由于驱动程序字符串与参数名称不匹配,因此出现了错误。
我删除了与数据库名称相同的数据源,一切开始正常工作。
我已经将此通知了MathWorks,因为我认为数据库具有与数据源相同的名称应该没有问题,因为签名是不同的,所以database
命令也应处理这种情况。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句