postgresql - 连接到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.
我已经看到了其他问题,比如这个,但错误信息是不同的。
我做错了什么?
解决方案
我自己找到了解决方案,而且很棘手(在我看来可能与错误有关)。
为了测试数据库连接,我首先创建了一个与数据库资源管理器的连接。它起作用了,我使用相同的数据库名称保存了这个连接。
当我使用该database
命令时,通过检查它的源代码,我发现它首先检查是否存在具有该名称的现有数据源,如果没有,它会搜索数据库。问题是由于我的连接具有相同的数据库名称,database
假设我想使用数据源命令版本而不是数据库。它试图使用这个命令:
conn = database(datasource,username,password)
而不是这个:
conn = database(databasename,username,password,driver,url)
因为wtrade
既是数据库的名称,也是数据源的名称。在这种情况下,根据 Matlab 文档,第四个参数driver
, 必须是参数名称,例如"Vendor"
of "PortNumber"
,因此由于驱动程序字符串与参数名称不匹配,因此我遇到了错误。
我已经删除了与数据库同名的数据源,一切都开始工作了。
我已将此通知 MathWorks,因为在我看来,如果数据库具有相同的数据源名称应该没有问题,因为签名不同,所以database
命令也应该处理这种情况。
推荐阅读
- windows - 光标不在窗口上时VS Code GUI失真
- git - 如何撤消对特定文件的已提交更改而不进行变基?
- java - 如何使用电报机器人发送本地文件?
- reactjs - InvalidSignatureException 如果来自反应的请求
- python - 乘法(例如 tf.math.multiply())和乘法层(例如 tf.keras.layers.multiply())有什么区别?
- google-apps-script - 应用脚本转储可变行数
- javascript - 元素在它应该消失之前消失
- html - HTML 下拉菜单 - 默认值
- javascript - 如何将 JSON 数据提取到谷歌表格中
- linkerd - 具有未知响应的链接器响应类