我想构建一个连接到远程 MySQL 服务器的简单应用程序。但是,我无法让它工作。
import ballerina/io;
import ballerina/jdbc;
import ballerina/mysql;
endpoint jdbc:Client jiraDB {
host: "jdbc:mysql://DB-SERVER:3306/jira",
username: "jira",
password: "PWD",
poolOptions: { maximumPoolSize: 5 }
};
type Domain record {
string domain,
string jira,
};
function main(string... args) {
var ret = jiraDB->select("SELECT * FROM `domains`", ());
table domainTable;
match ret {
table tableReturned => domainTable = tableReturned;
error e => io:println("Select data from domains table failed: " + e.message);
}
while(domainTable.hasNext()) {
var domain = <Domain>domainTable.getNext();
match domain {
Domain d => io:println("Domain: " + d.domain);
error e => io:println("Error in get employee from table: "
+ e.message);
}
}
}
MySQL 的结构并不是很重要。我认为这与缺少/错误使用的 JDBC/MySQL 库有关。
请问您有什么想法可以让它在 Mac OS X 上运行吗?
$ ballerina run hello.bal
error: ballerina/runtime:CallFailedException, message: call failed
at ..<stop>(hello.bal:5)
caused by error
at ballerina/jdbc:stop(endpoint.bal:66)
我正在使用最新的 Mac OS X:
$ ballerina --version
Ballerina 0.980.1
最佳答案
首先,最新的芭蕾舞女 Actor 版本是0.981.0。如果您可以使用最新版本,那就太好了,因为它会包含最新的错误修复和改进。
在 Ballerina 中,有一个通用的 jdbc 客户端,可用于连接到任何具有 jdbc 驱动程序的数据库。此外,对于 mysql 和 h2,有两个专门为这两个数据库实现的客户端。
当连接到 mysql 时,您可以使用通用的 jdbc 客户端或 mysql 特定的客户端。建议使用 mysql 特定客户端。
在您的代码片段中,我可以看到您正在使用 jdbc 客户端。正如 Anoukh 上面提到的,端点配置不正确。
以下是通用 jdbc 客户端端点的示例配置。
endpoint jdbc:Client testDB {
url: "jdbc:mysql://localhost:3306/testdb",
username: "user1",
password: "pass1",
poolOptions: { maximumPoolSize: 5 }
};
以下是 mysql 客户端端点的示例配置。
endpoint mysql:Client testDB {
host: "localhost",
port: 3306,
name: "testDB",
username: "user1",
password: "pass1",
poolOptions: { maximumPoolSize: 5 }
};
为了使用任一客户端,您需要将 mysql jdbc 驱动程序复制到 ${BALLERINA_HOME}/bre/lib。
即使在更正配置并复制驱动程序后,如果问题仍然存在,请检查是否在运行 bal 文件并共享的位置创建了名为 ballerina-internal.log 的文件。也请分享您正在使用的mysql数据库和驱动程序版本。
关于mysql - 无法从 Mac OS X 上的 Ballerina.io 连接到 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51988037/